繁体   English   中英

javascript #map如何从数组中删除对象?

[英]How does javascript #map work with removing an object from an array?

为什么以下返回未定义? 我不应该回到[{name:'bug']吗?

var a= [{name:'dark'},{name:'bug'}]

a.map(function (obj) {
    if (obj.name !== 'dark'){
      return obj
    }
  })

//returns [undefined,{name:'bug}]

.map表示您正在为数组中的每个项目映射某些内容。 如果不返回任何内容,它将返回undefined

如果希望根据条件获取某些值,则应使用.filter

 var a = [{ name: 'dark' }, { name: 'bug' }] var b = a.filter(function(obj) { return obj.name !== 'dark' }) console.log(b) 

用法

  • 映射:如果您希望从对象数组中获取某个对象的某些属性。
  • 过滤器:如果您希望基于条件获取特定值。 这将返回数组。
  • 查找:如果只希望获得第一个匹配值。 这将返回元素而不是数组。
  • forEach:如果您希望遍历数组并进行特定处理。

注意:大多数数组函数都存在兼容性问题,因此在使用前应进行检查。

参考文献

  • map :map()方法创建一个新数组,其结果是对该数组中的每个元素调用提供的函数
  • Filter :filter()方法创建一个新数组,其中所有元素都通过了由提供的函数实现的测试。

您可以使用这样的过滤器:

var a= [{name:'dark'},{name:'bug'}];
var b = a.filter(item => item.name != 'dark');
console.log(b); // [ { name: 'bug' } ] 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM