Вот мой массив объектов JavaScript:
inventoryArray = [
{name: 'pizza', category: 'food', unique: 'no', amount: 12}
{name: 'bow', category: 'weapon', unique: 'no', amount: 1}
{name: 'pizza', category: 'food', unique: 'yes', amount: 1}
]
Все они имеют одинаковые ключи и большинство имеют разные значения.
Я хочу создать массив значений на основе ключей, которые динамическивыглядит так:
values = [
['pizza', 'bow', 'pizza'] // name
['food', 'weapon', 'food'] // category
['no', 'no', 'yes'] //unique
[12, 1, 1] // amount
// TODO only add distinct values:
// i.e. first array would be ['pizza', 'bow']
]
Самое близкое, что я получил, это:
const keys = [];
const values = [];
for(let i = 0; i < inventoryArray.length; i++){
keys[i] = Object.keys(inventoryArray[i]);
}
for(let i = 0; i < keys[0].length; i++) {
const value = [];
for(let j = 0; j < inventoryArray.length; j++) {
value[j] = inventoryArray[j][keys[j][i]];
}
values[i] = value;
}
Да, я знаю, это уродливо.
То, что keys[0]
во втором цикле for не очень динамично.Правильно?
Я все еще довольно новичок в JavaScript, и я попытался поэкспериментировать с методом map для массивов, но не смог заставить его динамически создавать их все.Просто по одному:
const names = inventoryArray.map(a => a.name);
Заранее спасибо!