2015-11-01 2 views
1

Я здесь в вложенных чертах объектов. Я чувствую, что есть ответ на этот вопрос, я просто не могу понять, как фразы о том, что происходит.Фильтрация массива объектов по свойству объекта внутри объекта в массиве

Таким образом, я получаю этот гигантский массив объектов из возврата REST (что-то вроде 450 + объектов), который поставляется, как это:

results[0] = { 
prop0: "String", 
prop1: "String", 
prop2: bool, 
prop3: Object { 
    prop0: "String" 
} 
prop4: "String" 
} 

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

Теперь мне нужно, чтобы каждая уникальная строка создавала массив объектов в исходном наборе данных, где results.prop3.prop0 соответствует строке в свернутом массиве. Было ли это довольно запутанным?

Отсюда:

Название: "Джо",
Место: состояние {
государства: "Нью-Йорк",
}
Живых: ложные
}

К этому :

Нью-Йорк (120)
Джо - Мертвый

Я получил это далеко, используя underscore.js:

for(index in collapsed){ 
var details = _.where(results,{state: {state: collapsed[index][0]}}); 

console.log(details); 

} 

Но я четко идиотом где-то, потому что это просто возвращается пустой массив для каждой вещи в моем свернутом массиве ,

Образец разрушилась
[{ "Нью-Йорк", 120}, { "Грузия", 79}, { "Another Place", 15}].

Я в основном хочу построить таблицу данных, где под каждым местом я загружаю объекты, где «Место» совпадает со строкой состояния в нижней части вложенного объекта.

Для точки jm _____, я собираюсь попробовать это.

+1

Вы можете включать образец того, что разрушилась как выглядит ? И это 'result [i] .Place.state.state'? – jmunsch

ответ

0

Вот примеры манипулирования данных с подчеркиванием на основе _.reduce() и _.filter()

Getting разрушился массив с количеством элементов, сгруппированных государствами

var collapsed = _.reduce(response, function(memo, item) { 
    if (! memo[item.Place.state]) { 
    memo[item.Place.state] = 0; 
    } 
    memo[item.Place.state]++; 
    return memo; 
}, {}); 

Результат: сгруппированные объектами с состояниями в качестве ключей и сосчитать как значения ,

{ 
    London: 2, 
    New York: 4 
} 

Начало фильтрации данных по штатам

var filtered = _.filter(response, function(item) { 
    return item.Place.state === "New York"; 
}); 

Результат: массив объектов только штата Нью-Йорк

Ссылка на jsbin демо

+0

Это определенно работает. Я думаю, что я хотел попробовать и быть умным и использовать ключи в свернутом массиве как текст фильтра в массиве объектов, созданных json-ответом. Теперь я понимаю, что без возможности динамического создания другого массива для каждого значения в свернутом массиве решение было неосуществимым. К счастью, в реальном решении свернутый массив всегда будет иметь одни и те же значения, поэтому я могу просто выполнить жесткий код. – ChrisPEditor

Смежные вопросы