转换除第一个元素之外的数组值

时间:2017-04-28 11:08:36

标签: javascript multidimensional-array

我有一个如下数组:

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]]

提前致谢。

3 个答案:

答案 0 :(得分:1)

只需尝试使用Array#mapparseFloat() 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)