在索引处获取没有元素的数组

时间:2015-07-03 09:04:21

标签: javascript arrays

我实现了一个函数来获取没有特定元素的数组的浅表副本(使用它的索引)。

但我必须调用三种方法来实现这一目标。有没有更好的方法呢?

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]

3 个答案:

答案 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())