这是我的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;
}
是的,我知道这很丑。
第二个for循环中的keys[0]
并不是真正的动态。对吧?
我在JavaScript上还很陌生,我尝试使用数组的map方法,但是无法动态创建它们。一一:
const names = inventoryArray.map(a => a.name);
谢谢!