通过查找值AngularJS在数组中添加键

时间:2018-05-30 14:11:33

标签: javascript arrays angularjs json

我试图通过搜索任何键值在JSON数组中添加额外的键。

示例 JSON: -

[
  {
    "$id": "2025",
    "ID": 41,
    "Name": "APPLE"
  },
  {
    "$id": "2026",
    "ID": 45,
    "Name": "MANGO"
  },
  {
    "$id": "2027",
    "ID": 48,
    "Name": "GUAVA"
  }
]

假设我必须在"Price": 50之后添加新密钥对示例"Name": "MANGO"或找到ID ID": 45。所以我期待的新JSON将是: -

[
  {
    "$id": "2025",
    "ID": 41,
    "Name": "APPLE"
  },
  {
    "$id": "2026",
    "ID": 45,
    "Name": "MANGO",
    "Price": 50
  },
  {
    "$id": "2027",
    "ID": 48,
    "Name": "GUAVA"
  }
]

必须添加与匹配的搜索关键字相关的对象。

所以,我无法找到与此问题相关的任何功能。

3 个答案:

答案 0 :(得分:1)

您可以运行循环并检查条件,然后向对象添加属性。这是一个正在运行的代码段。您可以在此处阅读有关JavaScript Objects

的更多信息



var myarray = [
                {
                    "$id": "2025",
                    "ID": 41,
                    "Name": "APPLE"
                },
                {
                    "$id": "2026",
                    "ID": 45,
                    "Name": "MANGO"
                },
                {
                    "$id": "2027",
                    "ID": 48,
                    "Name": "GUAVA"     
                }
]
for(var i=0;i<myarray.length;i++){
  if(myarray[i].$id === "2025" || myarray[i].Name === "APPLE"){
    var data = myarray[i];
    data.price = 50
  }
}
console.log(myarray)
&#13;
&#13;
&#13;

答案 1 :(得分:1)

您可以使用array#find来比较ID。然后,您可以将Price键添加到对象。

let arr = [ { "$id": "2025", "ID": 41, "Name": "APPLE" }, { "$id": "2026", "ID": 45, "Name": "MANGO" }, { "$id": "2027", "ID": 48, "Name": "GUAVA" } ],
    id = 45,
    obj = arr.find(({ID}) => ID === id);
if(obj);
  obj.Price = 50;
console.log(arr);

答案 2 :(得分:0)

您可以尝试:

data.find(item => item.ID === 45).price = 50;

如果项目不可用,则覆盖案例:

(data.find(item => item.ID === 45) || {}).price = 50;