gpt4 book ai didi

javascript - 如何填充对象数组中缺少的键?

转载 作者:行者123 更新时间:2023-11-29 17:47:29 26 4
gpt4 key购买 nike

我有一个对象数组,它们应该都具有相同的键,但缺少一些键。我想用通用值填充缺失的键。

我正在寻找一种简单的方法来做到这一点(本地或通过库),下面我使用的代码现在可以工作,在我未经训练的眼睛看来有点沉重,我确信我重新发明了做某事的乏味方式有一个简单的。

var arr = [{
"a": 1,
"b": 2,
"c": 3
},
{
"a": 10,
"c": 30
},
{
"b": 200,
"c": 300
},
]
// get the list of all keys
var allkeys = []
arr.forEach((objInArr) => {
allkeys = allkeys.concat(Object.keys(objInArr))
})
// check all arr entries for missing keys
arr.forEach((objInArr, i) => {
allkeys.forEach((key) => {
if (objInArr[key] === undefined) {
// the generic value, in this case 0
arr[i][key] = 0
}
})
})
console.log(arr)

最佳答案

这是一个在对象字面量中使用属性传播的版本,尽管这对浏览器的支持非常有限:

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Spread_operator

var arr = [{
"a": 1,
"b": 2,
"c": 3
},
{
"a": 10,
"c": 30
},
{
"b": 200,
"c": 300
},
]

// Create an object with all the keys in it
// This will return one object containing all keys the items
let obj = arr.reduce((res, item) => ({...res, ...item}));

// Get those keys as an array
let keys = Object.keys(obj);

// Create an object with all keys set to the default value (0)
let def = keys.reduce((result, key) => {
result[key] = 0
return result;
}, {});

// Use object destrucuring to replace all default values with the ones we have
let result = arr.map((item) => ({...def, ...item}));

// Log result
console.log(result);

关于javascript - 如何填充对象数组中缺少的键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47870887/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com