将json元素和值添加到多个json对象

问题描述 投票:0回答:2

我想将JSON对象与ARRAY组合。我想从var产品上找到的密钥中检索数据,并将得分结合到一个新变量(组合结果)

综合结果是我所需要的。我绝对不知道该怎么做

var product = {
    "presentation": 3,
    "imgmax": http://test.com/img.jpg,
    "puissance": 5,
    "efficacite": 4,
    "description": "This product is awesome but i need to combine JSON results"
}

var array = [
  {
  "caracname": "presentation",
  "name": "Présentation"
  },
  {
  "caracname": "efficacite",
  "name": "Efficacité"
  },
  {
  "caracnam": "puissance",
  "name": "Puissance"
  }
]




var combinedresults = [
    {
    "caracname": "presentation",
    "name": "Présentation",
    "score": 3
    },
    {
    "caracname": "efficacite",
    "name": "Efficacité",
    "score": 4
    },
    {
    "caracnam": "puissance",
    "name": "Puissance",
    "score": 5
    }
  ]
javascript json
2个回答
0
投票

遍历数组中的每个项目,如果产品对象包含与当前项目caracname匹配的键,则将其值作为分数添加。

见下文:

var product = {
    "presentation": 3,
    "imgmax": "http://test.com/img.jpg",
    "puissance": 5,
    "efficacite": 4,
    "description": "This product is awesome but i need to combine JSON results"
}

var array = [
  {
  "caracname": "presentation",
  "name": "Présentation"
  },
  {
  "caracname": "efficacite",
  "name": "Efficacité"
  },
  {
  "caracname": "puissance",
  "name": "Puissance"
  }
]

array.forEach(function(item) {

  if (product[item.caracname]) {
    item.score = product[item.caracname];
  }
  
});

console.log(array);

0
投票

只需映射当前数组,使用score属性扩展每个对象。

array.map(obj => ({...obj, score: product[obj.caracname]}));

如果您不熟悉,请考虑查看spread operator;

© www.soinside.com 2019 - 2024. All rights reserved.