使用JAVASCRIPT向JSON中的数组对象添加名称-值对

使用JAVASCRIPT向JSON中的数组对象添加名称-值对,javascript,json,crud,Javascript,Json,Crud,我想实现这一点: “检查键名默认值是否可用,如果可用,则在同一对象中添加一个以上的键。=>(“pin”:91)”在下面给出的json上。我尝试了以下代码 var myObj = { "data": [{ "code": "EN", "language": "English", "content_available": true, "isdefault": true }, { "code"

我想实现这一点: “检查键名默认值是否可用,如果可用,则在同一对象中添加一个以上的键。=>(“pin”:91)”在下面给出的json上。我尝试了以下代码

var myObj = {
     "data": [{
         "code": "EN",
         "language": "English",
         "content_available": true,
         "isdefault": true
     }, {
         "code": "AR",
         "language": "Arabic",
         "content_available": true,
         "isdefault": false,
                "default" : true

     }, {
         "code": "BR",
         "language": "Brazilian Portuguese",
         "content_available": true,
         "isdefault": false
     }, {
         "code": "CN",
         "language": "Simplified Chinese",
         "content_available": true,
         "isdefault": false,
                "default" : true
     }, {
         "code": "TW",
         "language": "Traditional Chinese",
         "content_available": true,
         "isdefault": false
     }, {
         "code": "DE",
         "language": "German",
         "content_available": true,
         "isdefault": false
     }, {
         "code": "ES",
         "language": "Spanish",
         "content_available": true,
         "isdefault": false
     }, {
         "code": "FR",
         "language": "French",
         "content_available": true,
         "isdefault": false
     }, {
         "code": "JP",
         "language": "Japanese",
         "content_available": true,
         "isdefault": false,
                 "default" : true
     }, {
         "code": "RU",
         "language": "Russian",
         "content_available": false,
         "isdefault": false
     }],
     "success": true
 }
function addKey(k) {
  for (var key in myObj.data) {
    if (myObj["data"][key] === k) {
      myObj["data"][key]["pin"] = "91";
    }
  }
}
addKey("default");
console.log(myObj);
功能检查分叉(obj,键){
对于(变量i=0;i

首先,我们得到数据密钥。因为它是一个数组,所以我们对它进行迭代。然后,我们检查默认键是否具有已定义的值,并且仅当已使用任何值定义了键pin时才添加键pin。

您需要做的就是循环遍历键名称,如果不存在,则创建它。但是,记住你的类型
for/in
用于迭代对象,而不是数组,
forEach()
是数组的首选

var myObj={
“数据”:[{
“代码”:“EN”,
“语言”:“英语”,
“内容可用”:正确,
“isdefault”:正确
}, {
“代码”:“AR”,
“语言”:“阿拉伯语”,
“内容可用”:正确,
“isdefault”:错误,
“默认值”:true
}, {
“代码”:“BR”,
“语言”:“巴西葡萄牙语”,
“内容可用”:正确,
“isdefault”:false
}, {
“代码”:“CN”,
“语言”:“简体中文”,
“内容可用”:正确,
“isdefault”:错误,
“默认值”:true
}, {
“代码”:“TW”,
“语言”:“繁体中文”,
“内容可用”:正确,
“isdefault”:false
}, {
“代码”:“DE”,
“语言”:“德语”,
“内容可用”:正确,
“isdefault”:false
}, {
“代码”:“ES”,
“语言”:“西班牙语”,
“内容可用”:正确,
“isdefault”:false
}, {
“代码”:“FR”,
“语言”:“法语”,
“内容可用”:正确,
“isdefault”:false
}, {
“代码”:“JP”,
“语言”:“日语”,
“内容可用”:正确,
“isdefault”:错误,
“默认值”:true
}, {
“代码”:“RU”,
“语言”:“俄语”,
“内容可用”:false,
“isdefault”:false
}],
“成功”:真的吗
}
函数addKey(k){
//myObj.data是数组。不应在数组上使用for/in循环
//但是forEach()在数组上是首选的
myObj.data.forEach(函数(obj){
//每个数组元素都是一个对象。我们需要循环该对象。
//for/in循环用于对象
用于(obj中的var prop){
//当前属性(键)名称是否与提供的参数相同(“默认值”)
if(prop==k){
//向对象添加新的键/值
obj[“引脚”]=“91”;
} 
}
});
}
addKey(“默认”);

console.log(myObj)
myObj[“数据”]
是一个数组,
myObj[“数据”][key]
是一个对象。它永远不能等于字符串
“default”
。请尝试
if(myObj[“data”][key].hasOwnProperty(k))
。为什么不将此作为答案而不是注释发布?@Xufox这给了我一个语法错误!!:(说的是意外的数字。@SylieC不,不是。我的代码和你的代码都不包含数字文字。这给了我“未捕获的TypeError:无法读取未定义的属性'default'”这是一些非常好的建议。以后一定会遵循这些建议。非常感谢,是的,这段代码很有效。:)@SylieC别忘了投票选出所有有用的答案,并将其中一个标记为“正确”答案。
function checkForKey(obj, key) {
    for (var i = 0; i < obj.data.length; i++) {
        if (obj.hasOwnProperty(obj.data[i]) && obj.data[i][key] !== undefined) {
            obj.data[i].pin = 91;
        }
    }
}

checkForKey(myObj, 'default');