gpt4 book ai didi

javascript - 即使存在重复项,也仅从 JS 数组中删除一项

转载 作者:行者123 更新时间:2023-11-30 16:18:57 25 4
gpt4 key购买 nike

我想我会分享这个以防人们需要它,因为我找不到类似的东西。

我想知道是否可以从数组中删除一个项目,即使该项目存在重复项也是如此。

让我们看一些代码:

var myArray = ['a', 'a', 'a', 'b', 'b', 'b', 'c', 'd', 'd', 'e'],
itemToRemove = 'a',
itemToAdd = 'f';

对于上面的例子,我想从数组中删除itemToRemove,但是,我不想删除所有的,只是1。然后我想添加itemToAdd.

为了提供一些背景信息,我正在构建一个基于类别/个性的测验,每个问题的答案都有一个类别。我想将所有选择的类别存储在一个数组中,然后在测验结束时根据最常见的类别显示结果。

问题是用户可以返回并根据需要更改他们的选择,因此如果他们改变主意,我需要删除之前的类别并添加新类别。

最佳答案

所以这个答案其实很简单。

var index = myArray.indexOf(itemToRemove);
if(index != -1) {
array.splice(index, 1);
}

由于 indexOf 函数只找到第一个索引并且只找到 1 个索引,这可以用来删除数组中的一个项目。

我们还需要小心 indexOf,因为 IE8 不支持它,因为 IE8 总是让人头疼。

所以下面的代码可以使 indexOf 为你工作,它必须在你使用该函数之前运行。

if (!Array.prototype.indexOf)
{
Array.prototype.indexOf = function(elt /*, from*/)
{
var len = this.length >>> 0;

var from = Number(arguments[1]) || 0;
from = (from < 0)
? Math.ceil(from)
: Math.floor(from);
if (from < 0)
from += len;

for (; from < len; from++)
{
if (from in this &&
this[from] === elt)
return from;
}
return -1;
};
}

来源: Why doesn't indexOf work on an array IE8?

如果有人有更好的方法来做到这一点,他们将不胜感激。

关于javascript - 即使存在重复项,也仅从 JS 数组中删除一项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35038164/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com