我有一个json数组:
0: {Id: "1", name: "Adam", Address: "123", userId: "i98"}
1: {Id: "2", name: "John", Address: "456"}
在上面的数组中,第二个数组没有可用的userId密钥。
如何循环遍历上面的数组并检查是否没有可用的userId密钥,然后添加值为0的密钥。例如,添加userId:“ 0”
我尝试过的是:
let jsonData = JSON.parse(JSON.stringify(userData));
for (const obj of jsonData) {
var hasId = false;
let objId = obj.find((o, i) => {
if (o.userId === "userId") {
hasId = true;
}
});
if (!hasId) {
obj.push();
}
}
但这给了我错误:
obj.find is not a function
任何输入可解决我的问题并将键值推入数组。
答案 0 :(得分:2)
在您的代码上,obj
是一个对象,并且对象上没有find
方法。如果要检查对象是否具有数组,可以if( obj.userId )
您可以使用forEach
遍历数组。
let jsonData = [{Id: "1", name: "Adam", Address: "123", userId: "i98"},{Id: "2", name: "John", Address: "456"}];
jsonData.forEach(o => {
o.userId = o.userId || 0; //Assign 0 if userId is undefined.
})
console.log(jsonData);
答案 1 :(得分:2)
您可以按照以下方式使用Array.prototype.map()
和Object.prototype.hasOwnProperty()
:
var jsonData = [{Id: "1", name: "Adam", Address: "123", userId: "i98"},{Id: "2", name: "John", Address: "456"}]
jsonData = jsonData.map(i => {
if(!i.hasOwnProperty('userId'))
i.userId = 0;
return i;
});
console.log(jsonData);