猿问

使用过滤器仅返回键的特定属性

我有一个数组对象,在该数组对象中,我需要根据isVerfied属性过滤并创建一个数组。


如果isVerfied属性为真,我只需要推送对象的 name 属性而不是将整个对象推送到数组中


我试过这个,但它似乎没有工作,因为它正在推动整个对象。


const users = [

   {

         name: 'Varun', 

         age: '18', 

         isVerfied: 'true'

   }, 

   {

         name: 'Rahul', 

         age: '12', 

   }

]

 

const verfiedUserNameNew = users.filter(user => {

     if (user.isVerfied) return user.name

})


console.log(verfiedUserNameNew) 

我也试过地图


const users = [

  {

        name: 'Varun', 

        age: '18', 

        isVerfied: 'true'

  }, 

  {

        name: 'Rahul', 

        age: '12', 

  },

]

         

const verfiedUserNameNew = users.map(user => {

  if (user.isVerfied) return user.name

})


console.log(verfiedUserNameNew)

但随后它返回 varun 和 undefined。我知道另一种解决方案是创建一个数组并运行一个 for.Each 循环,在该循环中放置一个 if 条件,然后将元素推入一个数组中


const users = [

  {

        name: 'Varun', 

        age: '18', 

        isVerfied: 'true'

  }, 

  {

        name: 'Rahul', 

        age: '12', 

  },

]

     

const newArray = []

users.forEach(element => {

  if (element.isVerfied) {

        newArray.push(element.name) 

  } 

}) 

     

console.log(newArray)

但我在想我们是否可以使用过滤方法来实现这一点?


翻阅古今
浏览 179回答 2
2回答

Smart猫小萌

您可以使用 reduceconst users = [{name: 'Varun',age: '18',isVerfied: 'true'},{name: 'Rahul',age: '12',},]const verfiedUserNameNew = users.reduce((op,{name,isVerfied}) => {  if (isVerfied) op.push(name)  return op}, [])console.log(verfiedUserNameNew)
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答