js过滤数组某一个值

let arr = [
    {
        type:1,
        msg:'第一个'
    },
    {
        type:1,
        msg:'第二个'
    },
    {
        type:2,
        msg:'第三个'
    }
]

想要的效果:

过滤出符合 type=1 的当前对象的msg,如上代码得出的结果就是['第一个','第二个']

let arr2 = arr.filter(item=>{
    return item.type == 1
}).map(item=>{
    return item.msg
})

求解有无 更好/性能更高 的写法

阅读 3.6k
4 个回答

这个够简单把,一个循环

 var list = arr.reduce(function (res, item) {
   if(item.type == 1) {
     res.push(item.msg);
   }
   return res;
 }, []);

 // ["第一个", "第二个"]
 console.log('list', list)
const arr2 = []
arr.forEach(item => {
    if(item.type === 1) {
        arr2.push(item.msg)
    }
})

你也可以用reduce

const result = arr.reduce((arr, item) => {
    if (item.type == 1) {
        arr.push(item.msg)
    }
    return arr
}, [])
console.log(result)

let newArr = arr.map(item => {

if (item.type === 1) {
    return item.msg
}

}).filter(item => !!item);

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