javascript splice

12
我有一个数组MyArray,想要删除在位置i上的一个元素。
我尝试了:
MyArray = MyArray.splice(i, 1); 

但它返回的是我想要移除的元素,而不是不含该元素的数组。

我相信这是一个简单的修复,不管怎样还是谢谢。

8个回答

22

修改

MyArray = MyArray.splice(i, 1); 

转换为

MyArray.splice(i, 1); 

11

您应该阅读有关 splice 的文档

概述

修改数组内容,添加新元素并删除旧元素。

原始数组会被改变,而不是返回一个已删除指定元素的新数组。 MyArray.splice(i, 1); 应该足够了。


好的,谢谢;希望问题标题能够进行 SEO 优化,这样其他人就不必浏览整个文档才能找到它 :) - frenchie

3

splice()是一种具有副作用的破坏性方法。虽然它返回已删除的元素,但它会修改你传入的实际数组。

alert("Before: " + MyArray);
MyArray.splice(i, 1);
alert("After: " + MyArray);

2

splice 方法直接修改原数组。

var arr = [1, 2, 3, 4];
// arr is [1, 2, 3, 4];
var el = arr.splice(0, 1);
// el is [1], arr is now [2, 3, 4].

1

你已经基本掌握了!但是不要将其分配给新值..只需使用现有的数组。

MyArray.splice(i, 1);
Something = MyArray;

希望这能有所帮助!

是的,splice方法编辑现有数组并将已删除的元素作为单独的数组返回。在使用splice方法后,请检查MyArray。更多信息:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/splice - kevin628

0

语法

array.splice(index , howMany[, element1[, ...[, elementN]]])

描述

更改数组的内容,添加新元素并删除旧元素。

返回值

包含已删除元素的数组。如果只删除一个元素,则返回一个元素的数组。如果没有删除任何元素,则返回一个空数组。

来自JavaScript中的Array splice方法 | MDN


0

我曾经有过类似的问题,特别是因为我只想删除数组中的特定项,而不是所有匹配该项的所有项。

我为KO可观察数组创建了这个扩展程序,它似乎起作用。 我还没有尝试过对象数组,但我不认为那会有问题。

当我第一次学习KO时,处理数组非常困难,所以我希望这对其他人有用:

JavaScript:

ko.observableArray.fn.removeAt = function (index) {
  this.valueWillMutate();
  this.splice(index, 1);
  this.valueHasMutated();
}

HTML:

<div data-bind="foreach: Answers">
    <input type="text" data-bind="value: $data"/>
    <button 
        data-bind="click: function(){ $parent.Answers.removeAt($index()) }"                          
        title="Remove"
    >X</button>
</div>

0

这是另一种方式(如果您仍然想将其设置为变量并保持原始数组不变):

// example array
var foo = ['1', '13', '44', '17', '17', '19', '1', '7', '17'];

// lets say we want to remove one of the 17s from the array
// convert array to string, do replacements, then convert back
var bar = foo.join().replace('17', '').replace(/\,\,/gi, ',').split(',');

// should log ['1', '13', '44', '17', '19', '1', '7', '17']
console.log(bar);

根据数组的结构,有时查询/操作字符串比数组更容易(有时反之亦然)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接