我有一个如下数组:
var myArray = [['aaa','33','34.5','23'],['bbb','35','34.5','63'],['ccc','53','34.5','25'],['ddd','33','34.5','3']]
我想将所有值转换为float,除了每个数组中的第一个元素。 所以结果将是这样的:
var myArray = [['aaa',33,34.5,23],['bbb',35,34.5,63],['ccc',53,34.5,25],['ddd',33,34.5,3]]
。
提前致谢。
答案 0 :(得分:1)
只需尝试使用Array#map
和parseFloat()
b != 0
,它就会阻止数组的第一个参数
没有箭头功能(适用于safari)
var myArray = [
['aaa', '33', '34.5', '23'],
['bbb', '35', '34.5', '63'],
['ccc', '53', '34.5', '25'],
['ddd', '33', '34.5', '3']
];
console.log(myArray.map(function(a) {
return a.map(function(a, b) {
return b != 0 ? parseFloat(a) : a;
})
}))

使用箭头功能
var myArray = [['aaa','33','34.5','23'],['bbb','35','34.5','63'],['ccc','53','34.5','25'],['ddd','33','34.5','3']];
console.log(myArray.map(a => a.map((a,b) => b != 0 ? parseFloat(a): a)))

答案 1 :(得分:1)
如果索引大于零,您可以迭代数组和内部数组并仅分配转换后的值。
var myArray = [['aaa','33','34.5','23'],['bbb','35','34.5','63'],['ccc','53','34.5','25'],['ddd','33','34.5','3']]
myArray.forEach(a => a.forEach((b, i, bb) => i && (bb[i] = +b)));
console.log(myArray);

.as-console-wrapper { max-height: 100% !important; top: 0; }

ES5
var myArray = [['aaa','33','34.5','23'],['bbb','35','34.5','63'],['ccc','53','34.5','25'],['ddd','33','34.5','3']]
myArray.forEach(function (a) { a.forEach(function (b, i, bb) { i && (bb[i] = +b); }); });
console.log(myArray);

.as-console-wrapper { max-height: 100% !important; top: 0; }

答案 2 :(得分:1)
您可以使用map()
然后从第一个元素的每个数组子数组中slice()
将其转换为数字并连接到新数组。
var myArray = [['aaa','33','34.5','23'],['bbb','35','34.5','63'],['ccc','53','34.5','25'],['ddd','33','34.5','3']]
var result = myArray.map(e => [e[0]].concat(...e.slice(1).map(parseFloat)));
console.log(result)