我需要你的帮助: 我有一个包含对象的数组(数据):
var data2 = [
0: Object { hex: "#ff847f", length: "40" }
1: Object { hex: "#afff90", length: "58" }
2: Object { hex: "#6d91b0", length: "30" }
]
我需要一个函数,这会产生一个新的数组,它只有唯一的十六进制值并且加上相等十六进制值的长度值。
结果应如下所示:
+
感谢您的想法。
答案 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;