为了账号安全,请及时绑定邮箱和手机立即绑定

根据数组里对象属性值是否一致分成二维数组

根据数组里对象属性值是否一致分成二维数组

月关宝盒 2019-03-14 13:14:01
根据对象里的ym值分成二维数组,比如这种新式[[{ "date": "2032-10-01", "num": 2, "ym": "203210", "day": "01" },{ "date": "2032-10-01", "num": 2, "ym": "203210", "day": "01" },{ "date": "2032-10-01", "num": 2, "ym": "203210", "day": "01" }],[{ "date": "2032-10-01", "num": 2, "ym": "203211", "day": "01" },{ "date": "2032-10-01", "num": 2, "ym": "203211", "day": "01" }]]有什么好的方法吗?
查看完整描述

3 回答

?
白衣染霜花

TA贡献1796条经验 获得超10个赞

let data = [{

    ym: '1',

    id: 1

}, {

    ym: '2',

    id: 2

}, {

    ym: '1',

    id: 3

}]


function trans (arr) {

    let cache = {}

    return data.reduce((sum, cur) => {

        let index = cache[cur.ym]

        if (index !== undefined) {

            sum[index].push(cur)

        } else {

            sum.push([cur])

            cache[cur.ym] = sum.length - 1

        }

        return sum

    }, [])

}

trans(data)


查看完整回答
反对 回复 2019-04-07
?
qq_遁去的一_1

TA贡献1725条经验 获得超7个赞

var keyArr= [];

var jsonArr = [];

for(let i in jsonStr){

    let str = jsonStr[i];

    if(keyArr.include(str.ym)){

        let index = keyArr.indexOf(str.ym);

        jsonArr.push(str)

    }else{

        keyArr.push(str.ym);

        let index = keyArr.length-1;

        jsonArr.push(str)

    }

    

}

return jsonArr;


查看完整回答
反对 回复 2019-04-07
?
MMMHUHU

TA贡献1834条经验 获得超8个赞

const data = [

    {ym: 123},

    {ym: 345},

    {ym: 123},

    {ym: 345},

]

let result = []

let subArr = [] // 用于去重(避免同一组ym出现在多个数组中)

data.forEach(item1 => {

    const ym = item1.ym

    if(!subArr.includes(ym)){

        subArr.push(ym)

        result.push(data.filter(item2 => ym === item2.ym))

    }

})


查看完整回答
反对 回复 2019-04-07
  • 3 回答
  • 0 关注
  • 598 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信