我有一个使用表示为的数组值的函数
markers[i]
如何选择数组中除此之外的所有其他值?
这样做的目的是将所有其他 Google 地图图像重置为其原始状态,但通过更改图像突出显示新图像。
我有一个使用表示为的数组值的函数
markers[i]
如何选择数组中除此之外的所有其他值?
这样做的目的是将所有其他 Google 地图图像重置为其原始状态,但通过更改图像突出显示新图像。
用于Array.prototype.splice
获取除此之外的元素数组。
这会永久影响阵列,因此如果您不希望这样做,请先创建一个副本。
var origArray = [0,1,2,3,4,5];
var cloneArray = origArray.slice();
var i = 3;
cloneArray.splice(i,1);
console.log(cloneArray.join("---"));
您可以使用 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; });
可以有任何比较逻辑来代替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
您还可以使用Filter中的第二个回调参数:
const exceptIndex = 3;
const items = ['item1', 'item2', 'item3', 'item4', 'item5'];
const filteredItems = items.filter((value, index) => exceptIndex !== index);
您可以使用 slice()
方法
var fruits = ["Banana", "Orange", "Lemon", "Apple", "Mango"];
var citrus = fruits.slice(1,3);
slice() 方法将数组中的选定元素作为新的数组对象返回。
另一种方法是使用 filter 和 slice Array 方法。
let array = [ 1, 2, 3, 4, 5, 6 ];
let leave = 2;
// method 1
console.log(array.filter((e,i) => i !== leave));
// logs [1, 2, 4, 5, 6];
//method 2
console.log([...array.slice(0, leave), ...array.slice(leave+1, array.length)]);
// logs [1, 2, 4, 5, 6];
此函数将返回一个新数组,其中包含除指定索引处的元素之外的所有元素:
const everythingBut = (array, i) => { /*takes an array and an index as arguments*/
let notIArray = []; /*creates new empty array*/
let beforeI = array.slice(0, i); /*creates subarray of all elements before array[i]*/
let afterI = array.slice(i+1,); /*creates subarray of all elements after array[i]*/
notIArray = [...beforeI, ...afterI]; /*add elements before and after array[i] to empty array*/
return notIArray; /*returns new array with array[i] element excluded*/
};
例如:
let array = [1, 2, 4, 7, 9, 11, 2, 6]
everythingBut(array, 2); /*exclude array[2]*/
// -> [1, 2, 7, 9, 11, 2, 6]
使用 ECMAScript 5
const array = ['a', 'b', 'c'];
const removeAt = 1;
const newArray = [...array].splice(removeAt, 1);