javascript映射如何从数组中删除对象?

javascript映射如何从数组中删除对象?,javascript,arrays,Javascript,Arrays,为什么下面的返回未定义?我不应该回去吗 var a= [{name:'dark'},{name:'bug'}] a.map(function (obj) { if (obj.name !== 'dark'){ return obj } }) //returns [undefined,{name:'bug}] .map表示您正在为数组中的每个项目映射某些内容。如果您不返回任何内容,它将返回未定义的 如果希望根据条件获取某些值,则应使用.filter var

为什么下面的返回未定义?我不应该回去吗

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

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

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

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

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

var a=[{
名字:“黑暗”
}, {
名称:“臭虫”
}]
变量b=a.过滤器(功能(obj){
返回obj.name!==“黑暗”
})

console.log(b)
.map
表示您正在为数组中的每个项目映射某些内容。如果您不返回任何内容,它将返回
未定义的

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

var a=[{
名字:“黑暗”
}, {
名称:“臭虫”
}]
变量b=a.过滤器(功能(obj){
返回obj.name!==“黑暗”
})

console.log(b)
您可以使用如下过滤器:

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

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

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

我觉得你有点把
map
filter
搞混了。我觉得你有点把
map
filter
搞混了。所以没有办法用map从arr中删除某些内容?我应该只使用forEach和pop?不。它不是用于此目的的。如果你想删除值,请使用
Array.filter
@mangocap总的来说,你不应该考虑“从数组中删除某些内容”。你最终会拼接、切片、弹出,让你自己感到困惑。几乎总是最好考虑用你想要的元素创建一个新数组,这正是
filter
所做的。不过,你可以在forEach语句中插入拼接线来删除所选对象。兼容性问题是什么使用map无法从arr中删除某些内容?我应该只使用forEach和pop?不。它不适用于此。如果您希望删除值,请使用
数组。filter
@通常,您不应该考虑“从数组中删除某些内容”。您最终会拼接、切片和弹出,这会让您感到困惑。几乎总是最好考虑使用您想要的元素创建一个新数组,这正是
filter
所做的。不过,您可以在forEach语句中插入拼接线来删除所选对象。什么兼容性问题?