0

次のようにネストされた配列があります。

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

"one"ネストされた配列インデックス 0 にある 1、2、および 12 のすべてのオカレンスをそれぞれ、"two"、およびに置き換えたい"twelve"ので、結果は次のようになります。

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

どうすればいいのですか?

4

3 に答える 3

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'文字列である) は 3 番目のメンバーを取得します。

for配列を反復するには、 -loopを使用できますが、forEach見栄えが良くなります。

于 2012-05-03T06:32:53.067 に答える
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/

于 2012-05-03T06:32:12.880 に答える
0

編集

言い忘れていたようです: このソリューションでは、配列を JSON エンコードする必要があります: var workArr = JSON.stringify(theArr).replace(..)。完了したら: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'};

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

于 2012-05-03T06:34:56.610 に答える