javascript - 使用不同的对象数据数组更新对象数组

标签 javascript arrays loops object underscore.js

我有一个非常棘手的操作要做。所以就在这里。

我有一个名为“data1”的对象数组

[Object, Object, Object]
       0:Object
               id="00456145"     //check this 
               name: "Rick"
               upper:"0.67"
               lower:"-0.34"
      1:Object
               id="00379321"     
               name:"Anjie"
               upper:"0.46"
               lower:"-0.56"
      2:Object
               id="00323113"      
               name:"dillan"
               upper:"0.23"
               lower:"-0.11"

我只对这些对象数组中的 id、上限值和下限值感兴趣。

这是名为“data2”的第二个对象数组

[Object, Object]
     0:Object
             id="0045614"   //present here if we remove last element of '00456145'
             cast="Rick"
             Contact: "Yes"
             upper:"0.11"    //need to be updated to '0.67'
             lower:"-0.11"   //need to be updated to '-0.34'
     1:Object
             id="0032311"     //present here if we remove last element of '00323113'
             cast:"dillan"
             Contact:"Maybe"
             upper:"0.11"
             lower:"-0.11"

所以,这就是我必须做的。我将首先检查“data1”。检查“data1”中存在的 id。例如对象 0 的 id="00456145"

我删除了其中的最后一个数字。所以它变成了 id="0045614"。 然后我比较该 id 是否存在于对象“data2”中。

如果存在,则“data1”中该对象 0 的上限值和下限值将传递到 id 所在的对象“data2”。在本例中,“data2”的对象 0 的 id=“0045614”。

因此上限和下限值将分别更新为 0.67 和 -0.34。

其他数组也类似。所以最终的输出应该类似于“data2”

[Object, Object]
     0:Object
             id="0045614"   
             cast="Rick"
             Contact: "Yes"
             upper:"0.67"    //updated
             lower:"-0.34"   //updated
     1:Object
             id="0032311"  
             cast:"dillan"
             Contact:"Maybe"
             upper:"0.23"      //updated
             lower:"-0.11"     //updated

最佳答案

在这种情况下,我喜欢 array#some,这样您就可以跳出循环,从而避免不必要的迭代:

var data1 = [{ id: "00456145", name: "Rick", upper: "0.67", lower: "-0.34" }, { id: "00379321", name: "Anjie", upper: "0.46", lower: "-0.56" }, { id: "00323113", name: "dillan", upper: "0.23", lower: "-0.11" }];
var data2 = [{ id: "0045614", cast: "Rick", Contact: "Yes", upper: "0.11", lower: "-0.11" }, { id: "0032311", cast: "dillan", Contact: "Maybe", upper: "0.11", lower: "-0.11" }];

data2 = data2.map(function(item) {
  data1.some(function(a) {
    if (item.id == a.id.slice(0, -1)) {
      item.upper = a.upper;
      item.lower = a.lower;
      return true;
    }
  });

  return item;
});

console.log(data2);

关于javascript - 使用不同的对象数据数组更新对象数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38134320/

相关文章:

JavaScript 数组问题

c++ - 对数组的引用

java - 如何用Java搜索文件并返回值?

java - 一次遍历数组 2 个项目

javascript - 使用 WebCrypto API 包装和解开 key

javascript - CSS 或 JavaScript 冲突 - Google map 无法显示

javascript - 如何从 javascript 中获取 Select HTML 中正确选择的值?

javascript - 是否可以在 mongoDB 2.6 上的聚合内使用来自不同集合的数据

java - 将字符串转换为数组或 float 列表

json - 无法在 Unix shell 中使用 JQ 遍历 JSON 响应对象