2015-05-27 2 views
1

я следующее:Как связать список элементов в javascript?

list1 = [{letter:'A'}, {letter:'B'}, ..., {letter:'Z'}] 

Я хочу, чтобы пройти через список и добавить ключевое значение «специальный»: «да» на все значения, которые находятся в этом list2: ['A', 'C','Z']

Конечная цель I хотите получить список:

list1 = [{letter:'A'}, {letter:'C'}, {letter:'Z'}] 

Как это сделать?

Я пробовал перебирать через list1, проверяя, есть ли в списке2, если нет, тогда соедините элемент из него, но он не работает, поскольку все индексы изменяются. Является ли сплайсинг не тем, что я хочу здесь? Что мне делать вместо этого?

+3

Итак, где '' yes "' в результирующем списке? – zerkms

+0

Вы хотите изменить первоначальный 'list1'? Или вы просто хотите создать новый, отфильтрованный список только с элементами, которые соответствуют одной из записей в 'list2'? – GregL

+1

Я хочу изменить исходный список1, поэтому он содержит только элементы в списке2 (но с добавленным специальным значением ключа. – Rolando

ответ

3

У вас есть две вещи, чтобы сделать здесь, так что давайте разберем их вниз:

  • фильтр ключи, которые не находятся в какой-то другой список
  • добавить ключ к другим кнопкам

Вы имеют массив, поэтому фильтрация проста:

list1 = [{letter:'A'}, {letter:'B'}, ..., {letter:'Z'}] 

filtered = list1.filter(function (el) { 
    return list2.indexOf(el.letter) !== -1; 
}); 

Теперь мы хотим добавить другие ключи, Array.prototype.map на помощь:

final = filtered.map(function (el) { 
    el.special = 'yes'; 
    return el; 
}); 

Array.map: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map

Array.filter: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter

Надежда, что помогает!