0

我有这样嵌套的数组:

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

我想将嵌套数组索引 0 处所有出现的 1、2 和 12 分别替换为"one""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'作为字符串) 会检索第三个成员。

要遍历数组,您可以使用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 回答