40

次のように表される配列値を使用する関数があります

 markers[i]

これ以外の配列内の他のすべての値を選択するにはどうすればよいですか?

これの目的は、他のすべてのGoogleマップ画像を元の状態にリセットし、画像を変更して新しい画像を強調表示することです。

4

7 に答える 7

25

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("---"));
于 2013-03-12T12:30:40.260 に答える
24

ECMAScript5を使用できます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
于 2016-02-17T11:44:22.177 に答える
12

フィルタで2番目のコールバックパラメータを使用することもできます。

const exceptIndex = 3;
const items = ['item1', 'item2', 'item3', 'item4', 'item5'];
const filteredItems = items.filter((value, index) => exceptIndex !== index);
于 2019-07-04T10:09:52.673 に答える
5

あなたは slice()方法を使うことができます

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

スライス()メソッドは、配列内の選択された要素を新しい配列オブジェクトとして返します。

于 2013-03-12T12:32:44.430 に答える
1

これを行う別の方法は、filterおよびsliceArrayメソッドを使用することです。

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];
于 2021-03-30T19:07:24.110 に答える
0

この関数は、指定されたインデックスの要素を除くすべての要素を含む新しい配列を返します。

    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]
于 2020-09-21T21:51:43.967 に答える
-1

ECMAScript5を使用

const array = ['a', 'b', 'c'];
const removeAt = 1;
const newArray = [...array].splice(removeAt, 1);
于 2020-03-30T14:17:47.993 に答える