怎么把这几个数组合成一个?

clipboard.png

有很多个dev ,dev1,dev2,dev3...
其中dev中对应的timestamp是一样的,例如dev1[0].timestamp=dev2[0].timestamp
想把dev中的state累加求平均值,dev1[0].state[0]+dev2[0].state[0]+dev3[0].state[0]....
得到

dev:[{timestamp:xxxx,state:[平均值1,平均值2,平均值3,平均值4,平均值5]
    {timestamp:xxxx,state:[平均值1,平均值2,平均值3,平均值4,平均值5]},
    {timestamp:xxxx,state:[平均值1,平均值2,平均值3,平均值4,平均值5]}
    ......
}]

求指导!!!

补充一下,dev的数量不确定,state里面的数量也不确定
阅读 2.4k
2 个回答
let merge = data => {
    let result = [];
    let keys = Object.keys(data);
    for (let i = 0; i < data[keys[0]].length || 0; i++) {
        let state = [];
        for (let j = 0; j < data[keys[0]][0].state.length; j++) {
            state[j] = 0;
            for (let key of keys) { 
                state[j] += data[key][i].state[j];
            }
            state[j] /= keys.length;
        }
        result.push({
            timestamp: data[keys[0]][i].timestamp,
            state
        });
    }
    return result;
}

concat() 方法用于连接两个或多个数组。

用法

arrayObject.concat(arrayX,arrayX,......,arrayX)

arrayX 必需。该参数可以是具体的值,也可以是数组对象。可以是任意多个。

返回值

返回一个新的数组。该数组是通过把所有 arrayX 参数添加到 arrayObject 中生成的。如果要进行 concat() 操作的参数是数组,那么添加的是数组中的元素,而不是数组。

JavaScript concat() 方法

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题