通过jquery中的索引删除数组值

Bas*_*kar 39 jquery

阵:

var arr = {'abc','def','ghi'};
Run Code Online (Sandbox Code Playgroud)

我想通过使用索引删除上面的数组值'def'.

Kum*_*ran 72

使用拼接方法.

ArrayName.splice(indexValueOfArray,1);
Run Code Online (Sandbox Code Playgroud)

1将从数组中删除项目indexValueOfArray.

  • 知道`.splice` 还返回一个已删除对象的数组很有用 (2认同)

mek*_*all 20

您的示例代码是错误的,将抛出一个SyntaxError.您似乎已经混淆了创建对象的语法Object与创建Array.

正确的语法是: var arr = [ "abc", "def", "ghi" ];

要从数组中删除项目,请根据其值使用splice方法:

arr.splice(arr.indexOf("def"), 1);
Run Code Online (Sandbox Code Playgroud)

要通过索引删除它,只需直接引用它:

arr.splice(1, 1);
Run Code Online (Sandbox Code Playgroud)


pet*_*est 11

你的语法不正确,你应该指定一个哈希:

hash = {abc: true, def: true, ghi: true};
Run Code Online (Sandbox Code Playgroud)

或者一个数组:

arr = ['abc','def','ghi'];
Run Code Online (Sandbox Code Playgroud)

只需将其设置为null,即可从哈希中有效删除项:

hash['def'] = null;
hash.def = null;
Run Code Online (Sandbox Code Playgroud)

或完全删除它:

delete hash.def;
Run Code Online (Sandbox Code Playgroud)

要从数组中删除项目,您必须遍历每个项目并找到所需的项目(可能存在重复项).您可以使用数组搜索和拼接方法:

arr.splice(arr.indexOf("def"), 1);
Run Code Online (Sandbox Code Playgroud)

这将找到"def"的第一个索引,然后使用splice将其从数组中删除.但是我建议使用.filter(),因为它可以让你获得更多控制:

arr.filter(function(item) { return item !== 'def'; });
Run Code Online (Sandbox Code Playgroud)

这将创建一个只包含非"def"元素的新数组.

值得注意的是,arr.filter()将返回一个新数组,而arr.splice将修改原始数组并返回已删除的元素.这些都很有用,具体取决于您要对项目执行的操作.