更改对象数组中的数据类型

Change the data type in the array of Objects

我有如下的对象数组

Object {Results:Array[2]}
    Results:Array[2]
    [0-1]
      0:Object
             id=1     
             name: "Rick"
             Value: "34343"
      1:Object
             id=2     
             name:'david'
             Value: "2332"

如您所见,Objects数组中的Value字段是一个字符串。我希望将所有这些都转换为数字。

最终数据应该是这样的。有人可以让我知道如何实现这一目标吗?

Object {Results:Array[2]}
    Results:Array[2]
    [0-1]
      0:Object
             id=1     
             name: "Rick"
             Value: 34343
      1:Object
             id=2     
             name:'david'
             Value: 2332

您可以使用 + 前缀将数字文字转换为数字:

var input = {
  Results: [{
    id: 1,
    name: "Rick",
    Value: "34343"
  }, {
    id: 2,
    name: 'david',
    Value: "2332"
  }]
}

for (var i = 0; i < input.Results.length; i++) {
  input.Results[i].Value = +input.Results[i].Value;
}

console.log(input);

您可以映射 data.Results 并在值属性上使用 parseInt()

data.Results = data.Results.map(function(d) {
    d.Value = parseInt(d.Value, 10);
  return d;
}); 

console.log(data);

但是,你为什么需要这个?也许您应该考虑在实际访问数据后进行解析...

只需在每个 "Value" 字段上调用 ​​.parseInt()。例如:`

for(var i in Results){
   if(Results[i].Value != ""){
       Results[i].Value = parseInt(Results[i].Value);
   }`
}

如果你能以基本的方式做到这一点,它将看起来像:

function convertArrayValues (array) { // obj.Results goes here
  // cloning can be ommited
  var array = JSON.parse(JSON.stringify(array));
  for(var i = 0; i < array.length; i++) {
    array[i].Value = parseFloat(array[i].Value);
  }
  return array;
}