在数组元素上使用delete运算符与使用array.splice方法有什么区别?
例如:
myArray = ['a', 'b', 'c', 'd'];
delete myArray[1];
// or
myArray.splice (1, 1);
如果我可以像删除对象那样删除数组元素,为什么还要使用拼接方法?
在数组元素上使用delete运算符与使用array.splice方法有什么区别?
例如:
myArray = ['a', 'b', 'c', 'd'];
delete myArray[1];
// or
myArray.splice (1, 1);
如果我可以像删除对象那样删除数组元素,为什么还要使用拼接方法?
当前回答
如果您的阵列较小,可以使用过滤器:
myArray = ['a', 'b', 'c', 'd'];
myArray = myArray.filter(x => x !== 'b');
其他回答
IndexOf也接受引用类型。假设以下场景:
var arr=[{项:1},{项2},{项3}];var发现=发现(2,3)//伪代码:将返回〔{item:2},{item:3}〕var l=基础长度;而(l-){var索引=arr.indexOf(找到[l])arr.splice(索引,1);}控制台日志(arr.length)//1.
不同之处:
var item2 = findUnique(2); //will return {item: 2}
var l = arr.length;
var found = false;
while(!found && l--) {
found = arr[l] === item2;
}
console.log(l, arr[l]);// l is index, arr[l] is the item you look for
如果您的阵列较小,可以使用过滤器:
myArray = ['a', 'b', 'c', 'd'];
myArray = myArray.filter(x => x !== 'b');
保持简单:-
当您删除数组中的任何元素时,它将删除所述位置的值,并使其为空/未定义,但该位置存在于数组中。
var arr=[1,2,3,4,5];函数del(){删除arr[3];控制台日志(arr);}德尔(arr);
其中,与拼接原型一样,参数如下//arr.splice(开始删除的位置,要删除的项目数)
var arr=[1,2,3,4,5];函数spl(){arr.splice(0,2);//arr.splice(开始删除的位置,要删除的项目数)控制台日志(arr);}spl(arr);
我在试图理解如何从数组中删除每一个元素时偶然发现了这个问题。这里是拼接和删除的比较,用于从项数组中删除每个“c”。
var items = ['a', 'b', 'c', 'd', 'a', 'b', 'c', 'd'];
while (items.indexOf('c') !== -1) {
items.splice(items.indexOf('c'), 1);
}
console.log(items); // ["a", "b", "d", "a", "b", "d"]
items = ['a', 'b', 'c', 'd', 'a', 'b', 'c', 'd'];
while (items.indexOf('c') !== -1) {
delete items[items.indexOf('c')];
}
console.log(items); // ["a", "b", undefined, "d", "a", "b", undefined, "d"]
对于那些想使用Lodash的人,可以使用:myArray=_.无(myArray,itemToRemove)
或如我在Angular2中所用
import { without } from 'lodash';
...
myArray = without(myArray, itemToRemove);
...