鍍金池/ 問答/PHP  HTML/ 根據(jù)數(shù)組里對象屬性值是否一致分成二維數(shù)組

根據(jù)數(shù)組里對象屬性值是否一致分成二維數(shù)組

clipboard.png
根據(jù)對象里的ym值分成二維數(shù)組,比如這種新式
[[{ "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" }]]

有什么好的方法嗎?

回答
編輯回答
青瓷
const data = [
    {ym: 123},
    {ym: 345},
    {ym: 123},
    {ym: 345},
]
let result = []
let subArr = [] // 用于去重(避免同一組ym出現(xiàn)在多個數(shù)組中)
data.forEach(item1 => {
    const ym = item1.ym
    if(!subArr.includes(ym)){
        subArr.push(ym)
        result.push(data.filter(item2 => ym === item2.ym))
    }
})
2017年3月12日 13:37
編輯回答
話寡
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)
2017年4月17日 23:24
編輯回答
孤客
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;
2017年10月15日 12:30