js 获取对应的数据结构

数组:

data= [
{id: 10061, name: "小明", fatigue: 30, focus: 79, relax: 36, created: "2021-07-13 17:31:02"},
{id: 10159, name: "小李 fatigue: 24, focus: 47, relax: 58, created: "2021-07-13 17:31:03"},
{id: 10061, name: "小明", fatigue: 30, focus: 86, relax: 53, created: "2021-07-13 17:31:07"},
{id: 10159, name: "16710240102", fatigue: 18, focus: 45, relax: 51, created: "2021-07-13 17:31:08"}
]

希望得到的结构是:根据参数获得数组中是每个人的created和fatigue或focus或relax组成的二维数组数组

获取fatigue
data = [{[[2021-7-13 17:31:02",30],["2021-07-13 17:31:07", 30]]},
{[[2021-7-13 17:31:03",24],["2021-07-13 17:31:08", 18]]}
]
阅读 1k
1 个回答

你期望的数据结构不符合javascript的要求,如果是字符串的还行,如果需要内存对象的,这个是不符合要求的,可能需要调整为如下的多维数组格式:

//获取fatigue
data = [
[[2021-7-13 17:31:02",30],["2021-07-13 17:31:07", 30]],
[[2021-7-13 17:31:03",24],["2021-07-13 17:31:08", 18]]
]

这样的话,就是一个根据ID过滤提取,再组合的情况。

data= [
{id: 10061, name: "小明", fatigue: 30, focus: 79, relax: 36, created: "2021-07-13 17:31:02"},
{id: 10159, name: "小李", fatigue: 24, focus: 47, relax: 58, created:"2021-07-13 17:31:03"},
{id: 10061, name: "小明", fatigue: 30, focus: 86, relax: 53, created: "2021-07-13 17:31:07"},
{id: 10159, name: "小李", fatigue: 18, focus: 45, relax: 51, created: "2021-07-13 17:31:08"}
]

var GetInfoByName=function(inArr, inName){
    let Rt=[];
    let tmp={};
    for(let i=0;i<inArr.length;i++){
        let atmp= [inArr[i]["created"],inArr[i][inName]]
        if(tmp[inArr[i]["id"]]===undefined) tmp[inArr[i]["id"]]=[];
        tmp[inArr[i]["id"]].push(atmp)
    }
    for( aArr in tmp ){
        Rt.push( tmp[aArr])
    }
    return Rt;
}

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