Saya telah membuat array asosiatif menggunakan fungsi berikut.

function checkEmpty(){

            var sizes = new Array();
            var validate = new Array();
            $j('div.option-fields').each(function(){
                if($j(this).attr('id')) {

                    sizes.push($j(this).attr('id'));
                }

            });
            for(var i=0; i< sizes.size(); i++){
                $j("#"+sizes[i]+' input[type=text]').each(function(){
                    if($j(this).val()){
                        //validate.push(true);
                        validate[sizes[i]] = true;  
                    }else{
                        //validate.push(false);
                        validate[sizes[i]] = false;
                    }
                });

            }
}

Yang mengembalikan [size-278: true, size-287: true]

Sekarang saya ingin mencari apakah hasil ini mengandung nilai yang salah atau tidak, atau apakah semua nilai dengan indeks yang berbeda sama atau tidak.

Saya menggunakan inArray tetapi selalu memberi -1.

0
Karan Adhikari 9 Agustus 2017, 16:38

2 jawaban

Jawaban Terbaik

Lebih baik validate menjadi Hash daripada Array

Cari Array Asosiatif di sini: https://www.w3schools.com/js/js_arrays.asp

Jadi nyatakan seperti ini:

var validate = {};

Daripada Anda akan mendapatkan sesuatu seperti ini {size-278: true, size-287: true}

Dan Anda dapat mencari nilai palsu seperti ini:

var validate = {'size-278': true, 'size-287': true};
var values = Object.values(validate);
console.log(values.indexOf(false));

var validate = {'size-278': true, 'size-287': true};
var values = Object.values(validate);
console.log(values.indexOf(true));

Perhatikan bahwa Object.values mungkin tidak didukung di browser lama

2
Arun J 26 Desember 2018, 06:24

Untuk mencari nilai dalam array asosiatif, Anda melakukannya seperti ini:

listOfLanguagesAndTheirSubtags = {"Afrikaans" : "AF", "Dansk" : "DA", "Deutsch": "DE", "English": "EN",  "Italiano" : "IT" }; 
var values = Object.values(listOfLanguagesAndTheirSubtags);
var subtagToFind = "AF"; 
if(values.includes(subtagToFind))
{
   console.log('value is found');
}
else
{
   console.log('value NOT found'); 
}

Untuk mencari apakah semua nilai dengan indeks yang berbeda adalah sama atau tidak, Anda dapat melangkah lebih jauh seperti ini:

var numberOfOccurencesOfSubtag = values.filter(function(value){
return value === subtagToFind;}).length 
if(numberOfOccurencesOfSubtag === values.length)
{
    console.log("All values with different indices are the same");//... as subtagToFind
}
else
{
    console.log("All values with different indices are NOT the same");//... as subtagToFind
}
0
Caleb Addy 26 September 2019, 08:13