我有这样嵌套的数组:
[["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"]]
我该怎么做?
答案 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'
是一个字符串)将检索第三个成员的原因。
答案 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}}
并使用匹配的数字作为属性名称。