как проверить в массиве, есть ли у него ключ: значение или нет?

#javascript

#javascript

Вопрос:

   var people =[{title:'Alan', hasChild:true},
        {title:'Alice', hasDetail:true},
        {title:'Amos', header'A'},
        {title:'Alonzo'},
        {title:'Brad'},
        {title:'Brent'},    
        {title:'Billy'},    
        {title:'Brenda'},   
        {title:'Callie'},
        {title:'Cassie'},   
        {title:'Chris'}];
  

Я хочу проверить в этом массиве, содержит ли он в себе ключ, значение header:value или нет. Я хочу проверить это для каждого элемента.

Комментарии:

1. Я даже не вижу там массива. Пожалуйста, попробуйте опубликовать какой-нибудь реальный код.

Ответ №1:

Это должно сделать это:

 for (var i = 0, c = people.length;i < c;i  ) {
    if (people[i].header) {
        // yay
        // not sure wether you want to check the value as well
        // but if that is the case, you'd do this
        if (people[i].header == 'A') {
            // do some more stuff
        }
    } else {
        // nay
    }
}
  

Комментарии:

1. Также следует проверить фактическое значение: if(people[i].header === 'A')

2. @Rudie не уверен, что это реальное требование. OP довольно расплывчатый, но я думаю, что он только хочет посмотреть, присутствует ли параметр

3. Он говорит о key:value , поэтому я думаю, что он тоже хочет знать / проверить значение. Действительно, неопределенно.

4. если я ничего не пропустил, не будет ли отображаться undefined ошибка, если в объекте отсутствует header ключ?

5. @naiquevin когда header ключ отсутствует, if оператор будет вычислен как false , что не приведет к ошибке.

Ответ №2:

 for(var i = 0; i < array.length;   i){
    if(array[i]["header"])
        //Do stuff with the header
    else
        //Do stuff without it
}
  

Это должно сработать… Хотя у вас ошибка в элементе с заголовком — это должно быть header:'A' , с :

Ответ №3:

вы можете проверить, определено оно или нет, используя typeof

 for (var i in arr) {    
    if (typeof arr[i].header !== 'undefined') {
       //key present
    }  else {
       //key not present
    }  
}