2012-05-03 22 views
0

をインデックスxでのすべての文字列を置き換えます私はこのようなネストされた配列を持っているネストされた配列に

[["1", "apple 1"], ["1", "pear 2"], ["2", "lemon 1"], ["12", "lemon 12"]] 

私は2、1の出現をすべて置き換えるのが好き、としてネストされた配列のインデックス0の12だろう"one""two"、それぞれ"twelve"、その結果がこれです:

[["one", "apple 1"], ["one", "pear 2"], ["two", "lemon 1"], ["twelve", "lemon 12"]] 

私はそれをどのように行うのですか?以下のような

答えて

1
var arr = [ 
    [ '1', 'apple 1' ], [ '2', 'pear 2' ], [ '3', 'lemon 3' ] 
] 

var numbers = [ 'one', 'two', 'three' ] 

arr.forEach(function (el) { 
    el[0] = numbers[el[0]] 
}) 

arr // [ [ 'one', 'apple 1' ], [ 'two', 'pear 2' ], [ 'three', 'lemon 3' ] ] 

配列のインデックスが実際に文字列で、numbers['2']'2'が文字列である)第三のメンバーを取得するだろう理由です。

配列全体を反復処理するには、for-loopを使用できますが、forEachはよりよく見えます。

+0

IE9より前のInternet ExplorerではforEachがサポートされていないので、注意してください。 – Bill

+0

ありがとう、@ Bill。また、[es5-shim](https://github.com/kriskowal/es5-shim)を使用してレガシーブラウザをサポートすることもできます。 – katspaugh

+0

8kbのコードはforループよりもforEachループの方が好きですから?それはかなり極端なようです... – Bill

0

何か:ここ

var obj = [["1", "apple 1"], ["1", "pear 2"], ["2", "lemon 1"], ["12", "lemon 12"]]; 

for (i = 0; i < obj.length ; i++) { 
    switch(obj[i][0]) { 
     case "1" : obj[i][0] = "one"; break; 
     case "2" : obj[i][0] = "two"; break; 
     case "12" : obj[i][0] = "twelve"; break; 
    } 
} 

はjsFiddleです:http://jsfiddle.net/dKZW5/1/

0

編集

私が言及するのを忘れてしまったようだ:var workArr = JSON.stringify(theArr).replace(..):このソリューションは、配列をコード化するJSONする必要があります。 theArr = JSON.parse(workArr);

私はどちらかであるとまで来ることができ、最速のものは、この操作を行います:そして、あなたが完了したら

var str = '[["1", "apple 1"], ["1", "pear 2"], ["2", "lemon 1"], ["12", "lemon 12"]]'.replace(/(\[")12/g,'$1twelve').replace(/(\[")2/g,'$1two').replace(/(\[")1/g,'$one'); 

をしかし、漁獲量のカップルがここにあります:あなたは交換してきた後replace(/(\[")12/g,'$1twelve')を書く場合もの、それは動作しません。これを回避するには、次のようにします。

str = '[["1", "apple 1"], ["1", "pear 2"], ["2", "lemon 1"], ["12", "lemon 12"]]'.replace(/(\[")12"/g,'$1twelve"').replace(/(\[")2"/g,'$1two"').replace(/(\[")1"/g,'$one"'); 

閉じる引用符を追加する。ただし、より洗練されたソリューションは、オブジェクトを作成することです。

var replace = {'1':'one','2':'two','12':'twelve'}; 

そして、一致する番号をプロパティ名として使用します。

関連する問題