简体   繁体   English

使用JAVASCRIPT将名称值对添加到JSON中的数组对象

[英]Adding a name value pair to an array object in JSON using JAVASCRIPT

I want to implement this : "Check the key name default is available or not, if available then add one more key in same object. => ("pin" : 91) " on the json given below. 我想实现这一点:“检查键名称默认值是否可用,如果可用,则在同一对象中再添加一个键。=>(“ pin”:91)“在下面给出的json上。 I have tried the following code. 我尝试了以下代码。

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);
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');

First, we get the data key. 首先,我们获得数据密钥。 Since it's an array we iterate over it. 由于它是一个数组,因此我们对其进行迭代。 Then, we check if default key has a defined value or not and add the key pin only when it has been defined with any value. 然后,我们检查默认钥匙是否具有定义的值,并仅在定义了任何值时才添加钥匙插脚。

All you need to do is loop through the key names and if not present, create it. 您需要做的就是遍历键名,如果不存在,请创建它。 But, keep your types in mind. 但是,请记住您的类型。 for/in is for iterating objects, not arrays and forEach() is preferred for arrays. for/in用于迭代对象,而不是数组,并且forEach()是数组的首选。

 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) { // myObj.data is an array. for/in loops should not be used on arrays // But forEach() is preferred on arrays myObj.data.forEach(function(obj){ // Each array element is an object. We need to loop that object. // for/in loops are for objects for(var prop in obj){ // Is the current property (key) name the same as the provided argument ("default") if(prop === k){ // Add new key/value to the object obj["pin"] = "91"; } } }); } addKey("default"); console.log(myObj); 

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM