问 题
var arr = [
{name:'xiaoming',id:"123"},
{name:'xiaoming',id:"456"},
{name:'xiaoming',id:"789"},
{name:'xiaohua',id:"101112"},
{name:'xiaowang',id:"131415"},
{name:'xiaohong',id:"161718"}
];
var obj = [];
for(var i=0; i
obj[arr[i]['name']] = arr[i]['id'];
}
console.log(obj)
我想把'name'为'xiaoming'的id过滤出来
这是现在的结果,我本来想objarr[i].push() 但用不了这个方法,
不要用if或别的什么判断
,有没有直接暴力的枚举算法
[xiaoming: "789", xiaohua: "101112", xiaowang: "131415", xiaohong: "161718"]
我想实现的是[xiaoming: ['123','456','789']]
或者{name:'xiaoming',id:['123','456','789']}
解决方案
首先,你给的参考结果前半句 [xiaoming: ['123','456','789']] 语法上就有问题,我想你是要后半句 {xiaoming: ['123','456','789']} 。
实现过程如下(es6 语法)
const arr = [] // 内容省略
const obj = {}
arr.forEach(item => {
const name = item.name
const items = obj[name] || [] // 判断是否要初始化
items.push(item.id)
obj[name] = items
})
const xiaoming = obj['xiaoming'] // 过滤出你要的答案
扫一扫关注IT屋
微信公众号搜索 “ IT屋 ” ,选择关注与百万开发者在一起