JS中处理JSON数据重复问题,取出里面name字段数值相同的作为一个数组;不相同的作为一个数组?

题目描述

从后端获取的接口数值是动态的,id和name的数值都是动态。json的格式如下,举个简单的例子:

var arr = [
    {id:1,name:2},
    {id:2,name:13},
    {id:3,name:2},
    {id:10,name:2}
];

现在,我需要根据name相同获取到的最终效果如下:

arr1 = [{id:2,name:13}]
arr2 = [
    {id:1,name:2},
    {id:3,name:2},
    {id:10,name:2}
]

也就是说 需要拆分出来一个name不相同的数组;一个name值相同的数组;
求各位老大帮忙解答一下?

阅读 4.8k
1 个回答
var arr = [
    {id:1,name:2},
    {id:2,name:13},
    {id:3,name:2},
    {id:10,name:2}
];
function f(arr) {
    var mp= {}
    var ret = []
    arr.forEach(item => {
        if (typeof mp[item.name] === 'number') {
            ret[mp[item.name]].push(item)
        } else {
            mp[item.name] = ret.length
            ret.push([item])
        }
    })
    return ret
}
console.log(f(arr))
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏