【发布时间】:2018-05-07 02:19:00
【问题描述】:
我去年和今天都发了this 的帖子,我认为事情可以简化。
我需要通过索引从数组中删除一个项目。当按索引时,数组是否具有相同的值并不重要。你的典型例子:
let arr = [1,2,3,2,1] // just an array, not array with objects
let x = 1;
// This will not be an expected result:
// Find all values that is equal to 1 then remove
arr.filter(num => num !== x) //=> [2,3,2]
我的期望是当我删除最后一个元素(1)时,例如数组应该是[1,2,3,2]:
let index = 4; // which is the last "1" in the array
let indexVal = arr.indexOf(4) // 1
let newArray = arr.splice(indexVal, 1) //=> [1,2,3,2]
现在是 2017 年,快到 18 年了,有没有更短的方法 (es5/6) 可以不使用任何 polyfil?
编辑:
将此视为待办事项:
<ul>
<li>me</li>
<li>me</li> // click to delete this one
<li>you</li>
<li>me</li>
</ul>
要正确删除该项目,我必须删除 index 而不是 value
【问题讨论】:
-
你为什么要在索引上调用
indexOf? -
你可以在一行中做到这一点
arr.splice(arr.indexOf(4), 1)) -
@user2357112 请耐心等待,因为我仍然理解...返回类似于
-1 -
改用
arr.filter((num, i) => i !== x);。 -
@Sylar:
array.splice(index, 1);是按索引。这就是为什么它说index。
标签: javascript arrays