-1

重複の可能性:
配列から項目を値で削除

次のような文字列リストを維持しています

var keyString = [];

keyString.push("anotherString");
keyString.push("yetAnotherString");
keyString.push("oneLastString");

keyString既に知っている値よりも少ない値からすべての結果を返すことができるようにしたいと考えています。

たとえば、 anotherString がある場合、配列内のanotherStringではないすべてを返したいとします。

明らかに、これはいくつかの方法で簡単に実行できますが、いくつかの制限があります。

ソリューションでループを使用したくない、過剰な量のメモリを使用したくない、元の配列を変更したくない.

これは不可能かもしれませんが、私はそれをそこに投げ出して、何かがあるかどうかを確認しようと思いました.

4

3 に答える 3

2

サンプルコードを考慮したいくつかの可能性がありますが、関数内にあります(またはreturn意味がありません)。例では、コピーしたくないため、元の配列を変更しても問題ないと想定しています。

1. を使用shiftして最初の要素を削除する

function something() {
    someObject["keyString"] = [];
    someObject["keyString"].push("anotherString");
    someObject["keyString"].push("yetAnotherString");
    someObject["keyString"].push("oneLastString");
    someObject["keyString"].shift(); 
    return someObject;
}

2.pop最後の要素を削除するために使用

function something() {
    someObject["keyString"] = [];
    someObject["keyString"].push("yetAnotherString");
    someObject["keyString"].push("oneLastString");
    someObject["keyString"].push("anotherString");
    someObject["keyString"].pop(); 
    return someObject;
}

3. を使用spliceして中間要素を削除する

function something() {
    someObject["keyString"] = [];
    someObject["keyString"].push("yetAnotherString");
    someObject["keyString"].push("anotherString");
    someObject["keyString"].push("oneLastString");
    someObject["keyString"].splice(1,1); 
    return someObject;
}
于 2012-11-14T16:22:44.747 に答える
2

を使用できますfilter()が、これは新しい配列も返します。

var newArray = keyString.filter( function( el ) {
  return el !== 'anotherString';
} );
于 2012-11-14T16:22:31.317 に答える
2

防弾ではありませんが、動作します:

var a = ["a", "b", "c", "d"];
a.splice( a.indexOf("c"), 1 );

console.log(a); // ["a", "b", "d"];
于 2012-11-14T16:24:13.580 に答える