Довольно сложно объяснить, поэтому я попытаюсь быть явным.Javascript: добавление 0 значений в массивы разных размеров
У меня есть объект, данные, который представляет собой массив объектов, который включает в себя массив объектов и строку:
var groups = [
{
bars: [
{label: 'a', value: 28},
{label: 'c', value: 16}
],
string: 'one'
},
{
bars: [
{label: 'a', value: 3},
{label: 'b', value: 17},
{label: 'c', value: 24}
],
string: 'two'
},
{
bars: [
{label: 'a', value: 12},
{label: 'd', value: 7},
{label: 'e', value: 36}
],
string: 'three'
},
{
bars: [
{label: 'c', value: 32},
{label: 'e', value: 2}
],
string: 'four'
}
]
мне нужно все «бары» объекты, чтобы быть того же размера и иметь 0 значение, если объект для указанной метки не существует. Как вы можете видеть, ключ метки, связанный с «барами», является конечным списком. Моя главная проблема здесь в том, что размер объекта «groups», а также размер объекта «bars» является динамическим. С подчеркиванием, я использовал:
var labelNames = _.uniq(_.flatten
(_.map(data.groups,function(groups) {
return _.pluck(groups.bars, 'label');
})));
извлечь список известных лейблов дает мне
['a', 'b', 'c', 'd', 'e']
теперь я хочу, чтобы отобразить этот массив баров объект дает мне этот выход:
var groups = [
{
bars: [
{label: 'a', value: 28},
{label: 'b', value: 0},
{label: 'c', value: 16},
{label: 'd', value: 0},
{label: 'e', value: 0}
],
string: 'one'
},
{
bars: [
{label: 'a', value: 3},
{label: 'b', value: 17},
{label: 'c', value: 24},
{label: 'd', value: 0},
{label: 'e', value: 0}
],
string: 'two'
},
{
bars: [
{label: 'a', value: 12},
{label: 'b', value: 0},
{label: 'c', value: 0},
{label: 'd', value: 7},
{label: 'e', value: 36}
],
string: 'three'
},
{
bars: [
{label: 'a', value: 0},
{label: 'b', value: 0},
{label: 'c', value: 32},
{label: 'd', value: 0},
{label: 'e', value: 2}
],
string: 'four'
}
]
Если это полезно, у меня должны быть даже бары, потому что я создал серию высоких диаграмм с этими объектами like this example. Надеюсь, это имеет смысл. Любая помощь будет оценена по достоинству. Я сошел с ума, пытаясь понять это.
Прокрутите каждый элемент 'групп' с помощью' _.each'. Используйте '_.pluck', чтобы получить все метки' bars' и '_.difference' между этим и известными ярлыками, чтобы получить недостающие. Затем добавьте элементы с этими метками и 'значение: 0'. – Barmar
Спасибо! Это доставило мне большую часть пути, поэтому я отправляю его как ответ – bspckl