我实现了一个函数来获取没有特定元素的数组的浅表副本(使用它的索引)。
但我必须调用三种方法来实现这一目标。有没有更好的方法呢?
const arrayWithoutElementAtIndex = function (arr, index) {
return arr.slice(0, index).concat(arr.slice(index + 1))
}
arrayWithoutElementAtIndex([1, 2, 4, 8, 16, 32, 64], 3) // [1, 2, 4, 16, 32, 64]
答案 0 :(得分:3)
常规filter怎么样?
const arrayWithoutElementAtIndex = function (arr, index) {
return arr.filter(function(value, arrIndex) {
return index !== arrIndex;
});
}
document.write(arrayWithoutElementAtIndex([1, 2, 4, 8, 16, 32, 64], 3)); // [1, 2, 4, 16, 32, 64]

这意味着您只有一个函数,并返回一个新的数组实例。
答案 1 :(得分:0)
你可以使用splice()在2个操作中完成,但不会看起来那么好
'use strict'
const arrayWithoutElementAtIndex = function(arr, index) {
var ret = arr.slice(); //make a copy
ret.splice(index, 1); //remove the item from given index
return ret; //return the copy
}
var array = [1, 2, 4, 8, 16, 32, 64];
var array2 = arrayWithoutElementAtIndex(array, 3) // [1, 2, 4, 16, 32, 64]
snippet.log(array)
snippet.log(array2)
<!-- Provides the `snippet` object, see http://meta.stackexchange.com/a/242144/134069 -->
<script src="http://tjcrowder.github.io/simple-snippets-console/snippet.js"></script>
答案 2 :(得分:0)
使用lodash:
_(this.state.additionalOwners, index).splice(index, 1).value())