如何从数组中删除一个特定值? 类似 :
array.remove(value);
我必须使用核心核心核心JavaScript。 不允许框架 。
如何从数组中删除一个特定值? 类似 :
array.remove(value);
我必须使用核心核心核心JavaScript。 不允许框架 。
当前回答
我本人也有这个问题(在更换阵列是可以接受的情况下),
var filteredItems = this.items.filter(function (i) {
return i !== item;
});
要给上面的片段略加上下文:
self.thingWithItems = {
items: [],
removeItem: function (item) {
var filteredItems = this.items.filter(function (i) {
return i !== item;
});
this.items = filteredItems;
}
};
此解决方案应该同时使用引用项和值项。 它都取决于您是否需要保持对原始数组的引用, 以判断该解决方案是否适用 。
其他回答
您可以用所有存取器示例创建索引 :
<div >
</div>
function getIndex($id){
return (
this.removeIndex($id)
alert("This element was removed")
)
}
function removeIndex(){
const index = $id;
this.accesor.id.splice(index.id) // You can use splice for slice index on
// accessor id and return with message
}
<div>
<fromList>
<ul>
{...this.array.map( accesors => {
<li type="hidden"></li>
<li>{...accesors}</li>
})
}
</ul>
</fromList>
<form id="form" method="post">
<input id="{this.accesors.id}">
<input type="submit" callbackforApplySend...getIndex({this.accesors.id}) name="sendendform" value="removeIndex" >
</form>
</div>
删除在索引i 上的元素, 不突变原始数组 :
/**
* removeElement
* @param {Array} array
* @param {Number} index
*/
function removeElement(array, index) {
return Array.from(array).splice(index, 1);
}
// Another way is
function removeElement(array, index) {
return array.slice(0).splice(index, 1);
}
主要有两种办法:
复数(): anArray.splice(index, 1);
let fruits = ['Apple', 'Banana', 'Mango', 'Orange']
let removed = fruits.splice(2, 1);
// fruits is ['Apple', 'Banana', 'Orange']
// removed is ['Mango']
删除删除: delete anArray[index];
let fruits = ['Apple', 'Banana', 'Mango', 'Orange']
let removed = delete fruits(2);
// fruits is ['Apple', 'Banana', undefined, 'Orange']
// removed is true
使用时要小心delete
用于对数组的数组。它有利于删除对象的属性,但对于数组则不那么好。最好使用splice
用于数组。
请注意,当使用delete
对于一个数组,您可能会获得错误的结果anArray.length
换句话说,delete
将会删除元素, 但它不会更新长度属性的值 。
使用删除后,也可以期望在索引编号上出现空洞,例如,最后可能会有第1、3、4、8、9和11号指数,而之前的长度与使用删除时相同。for
循环会崩溃, 因为索引不再是相继的 。
被迫使用delete
出于某种原因,你应该使用for each
需要通过数组循环时循环循环。事实上,总是避免使用索引for
如果可能的话,循环。这样代码就会更稳健,更不易遇到指数问题。
有个朋友有问题因特网探索者 8并告诉我他做了什么。我告诉他这是错的,他告诉我他在这里得到了答案。当前的顶级答案不会在所有浏览器(例如因特网探索者8号)中都有效,它只会消除项目首次出现的情况。
function removeAllInstances(arr, item) {
for (var i = arr.length; i--;) {
if (arr[i] === item) arr.splice(i, 1);
}
}
它会从数组向后循环( 因为随着项目被删除, 指数和长度会变化) , 如果找到的话, 它会删除它。 它会在所有浏览器中发挥作用 。
你可以轻而易举地用过滤过滤器方法 :
function remove(arrOriginal, elementToRemove){
return arrOriginal.filter(function(el){return el !== elementToRemove});
}
console.log(remove([1, 2, 1, 0, 3, 1, 4], 1));
这将清除数组中的所有元素, 并且运行速度比slice
和indexOf
.