我试图从带有字符串索引的数组中删除一个特定的元素,但是所有的元素都被删除了。
var myArray = new Array();
myArray['abc'] = 'abc';
myArray['cde'] = 'cde';
myArray['efg'] = 'efg';
console.log('before splice:');
console.log(myArray);
myArray = myArray.splice('abc',1);
console.log('after splice:');
console.log(myArray);
before splice:
[abc: "abc", cde: "cde", efg: "efg"]
after splice:
[]
在此链接[1]上找到文档:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/splice
没有明确说明index必须是整数还是其他值
6条答案
按热度按时间46qrfjad1#
这里需要的不是数组而是对象。
数组只能有整数索引。
yruzcnhs2#
JavaScript
Array
是一个JavaScript对象,可以有任意的属性。你在代码中所做的是设置3个属性,而不是将元素推入数组。当您在
splice
之后打印myArray
时,这些属性不存在,因为splice
返回一个由删除的元素组成的新Array
,在本例中,由于没有删除任何元素,因此它恰好是一个空数组[]
n9vozmp43#
使用
delete obj[key]
从对象中删除键值对。如果是arrays
,则使用Splice
;如果是object
,则使用delete
。ygya80vv4#
除了不正确的
splice
语法之外,当数据结构是一个对象时,您试图使用数组。然后,您可以直接删除对象的属性:
DEMO
如果您 * 有 * 一个数组:
然后,您 * 可以 * 使用splice,例如在数组的迭代中:
或者,您可以使用
filter
返回一个不包含该元素的新数组:DEMO
csga3l585#
它不会将项推到数组中,你只是在数组中创建了javascript对象,结果你不能对数组进行切片。
将myArray放到Web浏览器控制台。您将看到该数组为空。
hgncfbus6#
如果您想了解如何使用splice从数组中删除所有成员,那么答案很简单:
splice(startPosition, pcsToRemove)
第一个0告诉接合从数组的最开头开始。
这里不回答作者的问题,只回答标题:
在javascript中使用splice删除数组中的所有元素