如何比较JavaScript中对象的键?

时间:2018-04-15 12:57:49

标签: javascript arrays object

我需要你的帮助: 我有一个包含对象的数组(数据):

var data2 = [
0: Object { hex: "#ff847f", length: "40" }
1: Object { hex: "#afff90", length: "58" }
2: Object { hex: "#6d91b0", length: "30" }
]

我需要一个函数,这会产生一个新的数组,它只有唯一的十六进制值并且加上相等十六进制值的长度值。

结果应如下所示:

+

感谢您的想法。

1 个答案:

答案 0 :(得分:0)

这可能不是最好的解决方案,但它确实有效。具有挑战性的一点是,您希望将长度作为字符串而不是数字。这是我的解决方案,我希望它有所帮助!



const transformArray = (arr) => {
  //first you need to convert the lengths to numbers to make adding easier
  arr.map((item) => {
    item.length = Number(item.length)
  })
  
  //then combine like objects
  let output = [];
  arr.forEach((dataObj) => {
    let found=false;
    for (let i=0; i<output.length; i++) {
      if (output[i].hex === dataObj.hex) {
        output[i].length+= dataObj.length;
        found=true;
      }
    }
      if (found===false) {
        output.push(dataObj)
      }
  }); 
  
  //then convert your lengths back to strings
  arr.map((item) => {
    item.length = item.length.toString();
  })
  
  return output;
}
&#13;
&#13;
&#13;