目标是获取与我所拥有的条件相匹配的数组的其他所有元素,但我无法做到这一点。
因此,我着手尝试在MDN的Array.prototype.indexOf()
中找到另一个示例。
var beasts = ['ant', 'bison', 'camel', 'duck', 'bison', 'duck', 'duck', 'bison', "duck", 'bison',"camel", "duck", "duck"];
beasts.splice(beasts.indexOf("bison",beasts.indexOf("bison"+1)),1);
console.log(beasts);
我希望它会从数组中删除第二个“野牛”,但会删除最后一个元素“鸭子” ...
我在这里可以做什么? (当然,我可能还没有学到正确的语法)
答案 0 :(得分:4)
您的拼接代码只有一个错误,该错误已在注释中发现({@ {@ adiga} It should be: beasts.indexOf("bison") + 1 and not beasts.indexOf("bison"+1)
)。
但是,我的猜测是,您实际上想从列表中删除'bison'
的所有个实例。我在那里可能是错的,但这是一个猜测。您可以使用过滤器做到这一点:
var beasts = ['ant', 'bison', 'camel', 'duck', 'bison', 'duck', 'duck', 'bison', "duck", 'bison',"camel", "duck", "duck"];
const updatedBeasts = beasts.filter(beast => beast !== 'bison');
console.dir(updatedBeasts);
答案 1 :(得分:3)
问题是您要使用bison+1
而不是bison
,所以请尝试以下操作:
var beasts = ['ant', 'bison', 'camel', 'duck', 'bison', 'duck', 'duck', 'bison', "duck", 'bison',"camel", "duck", "duck"];
beasts.splice(beasts.indexOf("bison",beasts.indexOf("bison")),1);
console.log(beasts);
答案 2 :(得分:2)
您需要修复indexOf语法
beasts.indexOf("bison"+1) // this searches for `bison1`
对此
beasts.indexOf("bison") + 1
var beasts = ['ant', 'bison', 'camel', 'duck', 'bison', 'duck', 'duck', 'bison', "duck", 'bison',"camel", "duck", "duck"];
beasts.splice(beasts.indexOf("bison",beasts.indexOf("bison")+1),1)
console.log(beasts);
答案 3 :(得分:2)
您的代码中有些小错误会导致您的输出。
首先,要从数组中删除元素,我们可以如下使用splice()
方法。
array.splice(删除的起始索引_起始_要删除的元素, number_of_elements_to_be_deleted)
如果大于数组的长度,则开始将设置为数组的长度。
正确的代码格式是:
var beasts = ['ant', 'bison', 'camel', 'duck', 'bison', 'duck', 'duck', 'bison', "duck", 'bison',"camel", "duck", "duck"];
beasts.splice(beasts.indexOf("bison"),beasts.indexOf("bison")+1);
console.log(beasts);
答案 4 :(得分:0)
这是工作方法
let beasts = ['ant', 'bison', 'camel', 'duck', 'bison', 'duck', 'duck', 'bison', "duck", 'bison',"camel", "duck", "duck"];
beasts.splice(beasts.indexOf("bison",beasts.indexOf("bison")),1);
console.log(beasts);