为了账号安全,请及时绑定邮箱和手机立即绑定

Javascript - 比较两个数组对象并附加值

Javascript - 比较两个数组对象并附加值

MM们 2021-11-18 10:13:39
如何比较两个数组对象并在匹配条件键上附加第一个数组对象和第二个?请建议。例如,在下面的数据中,我需要将vale_data服务密钥与sli_data服务密钥进行比较,如果匹配,则将sli_datavol_sli 密钥值附加到vale_data.var vale_data = [          {service: "allocateorder", vol_slo: "10000"},          {service: "cancelorder", vol_slo: "10000"},          {service: "adviceorder", vol_slo: "10000"}]var sli_data = [          {service: "allocateorder", vol_sli: "0.9484949"},          {service: "cancelorder", vol_sli: "0.242322"}]我已经尝试过如下所示,但没有奏效。var vale_data = [          {service: "allocateorder", vol_slo: "10000"},          {service: "cancelorder", vol_slo: "10000"},          {service: "adviceorder", vol_slo: "10000"}]var sli_data = [          {service: "allocateorder", vol_sli: "0.9484949"},          {service: "cancelorder", vol_sli: "0.242322"}]for (i=0; i<Object.keys(vale_data).length; i++) {  for (j=0; j<Object.keys(sli_data).length; j++) {      if (Object.values(vale_data)[i]['service'] == Object.values(sli_data)[i]['service']) {          vale_data.map(item => {item.vol_sli = Object.values(sli_data)[j]['vol_sli'] })      }  }}预期输出:vale_data = [ {service: "allocateorder", vol_slo: "10000", vol_sli: "0.9484949"}, {service: "cancelorder", vol_slo: "10000", vol_sli: "0.242322"}, {service: "adviceorder", vol_slo: "10000", vol_sli: ""} ]实际输出:error: Uncaught TypeError: Cannot read property 'service' of undefined
查看完整描述

3 回答

?
拉莫斯之舞

TA贡献1820条经验 获得超10个赞

您可以尝试这样做,方法是创建一个对象作为映射,然后使用它来获取输出数组。使用Javascript MAP存储结果


var vale_data = [

          {service: "allocateorder", vol_slo: "10000"},

          {service: "cancelorder", vol_slo: "10000"},

          {service: "adviceorder", vol_slo: "10000"}]


var sli_data = [

          {service: "allocateorder", vol_sli: "0.9484949"},

          {service: "cancelorder", vol_sli: "0.242322"}]

var sli_dataMap = new Map(sli_data.map(({service,vol_sli}) => ([service,vol_sli])));

 

vale_data = vale_data.map(obj => ({...obj,vol_sli:sli_dataMap.get(obj.service) || ''}));


console.log(vale_data);


查看完整回答
反对 回复 2021-11-18
?
HUH函数

TA贡献1836条经验 获得超4个赞

var vale_data = [

    {service: "allocateorder", vol_slo: "10000"},

    {service: "cancelorder", vol_slo: "10000"},

    {service: "adviceorder", vol_slo: "10000"}];


var sli_data = [

    {service: "allocateorder", vol_sli: "0.9484949"},

    {service: "cancelorder", vol_sli: "0.242322"}];



vale_data.map(vale_record => {

    let rec_found = sli_data.find(sli_record => sli_record.service === vale_record.service);

    if(rec_found) {

    vale_record['vol_sli'] = rec_found['vol_sli'];

    }

    else {

    vale_record['vol_sli'] = ''

    } 

    return vale_record;

});


console.log(vale_data);


查看完整回答
反对 回复 2021-11-18
?
潇潇雨雨

TA贡献1833条经验 获得超4个赞

实现这一点的可能方法之一是使用map和find以下方式:


var vale_data = [{

    service: "allocateorder",

    vol_slo: "10000"

  },

  {

    service: "cancelorder",

    vol_slo: "10000"

  },

  {

    service: "adviceorder",

    vol_slo: "10000"

  }

];


var sli_data = [{

    service: "allocateorder",

    vol_sli: "0.9484949"

  },

  {

    service: "cancelorder",

    vol_sli: "0.242322"

  }

];


var result = vale_data.map(element => {


  let sli = sli_data.find(service => service["service"] === element["service"]) || 

    { vol_sli: "" };


  return { ...element,

    ...sli

  };


});


console.log(result);


查看完整回答
反对 回复 2021-11-18
  • 3 回答
  • 0 关注
  • 264 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信