如何选择除第i个元素之外的数组中的所有其他值?

bla*_*arg 27 javascript arrays

我有一个函数使用表示为的数组值

 markers[i]
Run Code Online (Sandbox Code Playgroud)

如何选择除此之外的数组中的所有其他值?

这样做的目的是将所有其他Google地图图像重置为原始状态,但通过更改图像突出显示新图像.

Dhr*_*hak 16

使用array.splice方法获取排除此元素的元素数组.

这将永久影响阵列,如果您不想这样,请先创建一个副本.

var origArray = [0,1,2,3,4,5];
var cloneArray = origArray.slice();
var i = 3;

cloneArray.splice(i,1);

console.log(cloneArray.join("---"));
Run Code Online (Sandbox Code Playgroud)


Yel*_*yev 15

您可以使用ECMAScript 5 Array.prototype.filter:

var items = [1, 2, 3, 4, 5, 6];
var current = 2;

var itemsWithoutCurrent = items.filter(function(x) { return x !== current; });
Run Code Online (Sandbox Code Playgroud)

可以有任何比较逻辑而不是x !== current.例如,您可以比较对象属性.

如果您使用基元,您还可以创建一个自定义函数except,它将引入此功能:

Array.prototype.except = function(val) {
    return this.filter(function(x) { return x !== val; });        
}; 

// Usage example:
console.log([1, 2, 3, 4, 5, 6].except(2)); // 1, 3, 4, 5, 6
Run Code Online (Sandbox Code Playgroud)

  • 如果数组值都相同,即[2,2,2,2],这将表现不同 (2认同)
  • 这会删除值为 2 的元素,而不是第 i 个位置的元素 (2认同)

小智 7

您还可以在Filter 中使用第二个回调参数:

const exceptIndex = 3;
const items = ['item1', 'item2', 'item3', 'item4', 'item5'];
const filteredItems = items.filter((value, index) => exceptIndex !== index);
Run Code Online (Sandbox Code Playgroud)


Mid*_*ido 5

您可以使用 slice()方法

var fruits = ["Banana", "Orange", "Lemon", "Apple", "Mango"];
var citrus = fruits.slice(1,3);
Run Code Online (Sandbox Code Playgroud)

slice() 方法将数组中选定的元素作为新的数组对象返回。