替换嵌套数组中索引x处的所有字符串

时间:2012-05-03 06:19:10

标签: javascript arrays

我有这样嵌套的数组:

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

我想在嵌套数组索引0处分别用"one""two""twelve"替换所有出现的1,2和12,所以结果就是这个:

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

我该怎么做?

3 个答案:

答案 0 :(得分: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看起来更好。

答案 1 :(得分: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/

答案 2 :(得分: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'};

添加收盘价。然而,更优雅的解决方案是创建一个对象:

{{1}}

并使用匹配的数字作为属性名称。