Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/429.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用.find()从数组中删除元素_Javascript_Arrays - Fatal编程技术网

Javascript 使用.find()从数组中删除元素

Javascript 使用.find()从数组中删除元素,javascript,arrays,Javascript,Arrays,因此,我有一个数组,我想通过.find()删除一个特定的元素。我应该如何使用它来达到这样的目的? 我知道它应该有一个条件,比方说 if(element === selectedItem) { Array.splice(index,1); } 但是我不知道如何将其包含到.find()中,从数组中删除项并不是查找()的目的 您需要的是Array.filter() 发件人: filter()方法创建一个新数组,其中包含通过所提供函数实现的测试的所有元素 下面是一个例子: var编号=[1,

因此,我有一个数组,我想通过
.find()
删除一个特定的元素。我应该如何使用它来达到这样的目的? 我知道它应该有一个条件,比方说

if(element === selectedItem)
{
   Array.splice(index,1);
} 

但是我不知道如何将其包含到
.find()

中,从
数组中删除项并不是
查找()
的目的

您需要的是
Array.filter()

发件人:

filter()方法创建一个新数组,其中包含通过所提供函数实现的测试的所有元素

下面是一个例子:

var编号=[1,2,3,4,5,6]
var evenNumbers=numbers.filter(number=>{
//返回计算结果为'true'的内容将
//将该项保留在结果数组中
返回编号%2==0
})

console.log(evenNumbers)
数组中删除项
不是
find()
的目的

您需要的是
Array.filter()

发件人:

filter()方法创建一个新数组,其中包含通过所提供函数实现的测试的所有元素

下面是一个例子:

var编号=[1,2,3,4,5,6]
var evenNumbers=numbers.filter(number=>{
//返回计算结果为'true'的内容将
//将该项保留在结果数组中
返回编号%2==0
})

console.log(evenNumbers)
要查找索引,您需要
indexOf
而不是
find
,这样您就可以在此基础上执行进一步的操作。

要查找索引,您需要
indexOf
而不是
find
,因此,您可以在此基础上执行进一步的操作。

您可以使用findIndex而不是find:

var数据=[
{id:1,名字:'Betty'},
{id:2,名称:'Mark'},
{id:3,名字:'Elizabeth'},
{id:4,名字:'Samuel'}
];
var index=data.findIndex(x=>x.name=='Mark');
如果(索引>=0)
数据拼接(索引1);

控制台日志(数据)您可以使用findIndex而不是find:

var数据=[
{id:1,名字:'Betty'},
{id:2,名称:'Mark'},
{id:3,名字:'Elizabeth'},
{id:4,名字:'Samuel'}
];
var index=data.findIndex(x=>x.name=='Mark');
如果(索引>=0)
数据拼接(索引1);

控制台日志(数据)假设您有一个条件
函数
,例如:

function condition(element) {
    return element === selectedItem;
}
现在,您可以使用find查找元素的值,如下所示:

var myItem = myArray.find(condition);
然后

myArray.splice(myArray.indexOf(myItem), 1);
但是,如果您的数组可能要删除多个匹配项,则

var myItem;
while ((myItem = myArray.find(condition)) !== undefined) {
    myArray.splice(myArray.indexOf(myItem), 1);
}

假设您有一个条件
函数
,如:

function condition(element) {
    return element === selectedItem;
}
现在,您可以使用find查找元素的值,如下所示:

var myItem = myArray.find(condition);
然后

myArray.splice(myArray.indexOf(myItem), 1);
但是,如果您的数组可能要删除多个匹配项,则

var myItem;
while ((myItem = myArray.find(condition)) !== undefined) {
    myArray.splice(myArray.indexOf(myItem), 1);
}

有一个方法
find()
,它返回满足给定条件的第一个元素。也许他需要那个,好吧,也许是,但之后他需要元素的索引。好的,这可以组合到
findIndex
@Madhavan.V,但是作为OP发布的
元素===selectedItem
,它看起来像是直接引用比较,应该与
indexOf
一起工作。有一个方法
find()
返回满足给定条件的第一个元素。也许他需要那个,好吧,也许是,但之后他需要元素的索引。好的,这可以组合到
findIndex
@Madhavan.V,但是当OP发布
元素===selectedItem
时,它看起来像是直接引用比较,应该与
indexOf
一起工作,但是过滤器不会从原始数组中移除(正如OP所希望的那样)并将返回另一个数组。是的-但是我认为最好尽可能地返回。同意,但这就是问题所在。没有,但是-这是一个答案,它不直接回答问题,但仍然达到OP的目的。如果您不同意,请向下投票,然后继续。@Eugen AndreiColiban这就是您应该这样做的原因。但是筛选器不会从原始数组中删除(如OP所愿),并将返回另一个数组。正确-但是我认为最好尽可能地删除。同意,但这就是所有的问题,事实上站在那里的不是,但是-这是一个答案,不直接回答问题,但仍然实现了OP的目的。如果你不同意,就投否决票,然后继续前进。@Eugen AndreiColiban这就是为什么你应该这样做。