Javascript 使用下划线更改数组中所有对象的值

Javascript 使用下划线更改数组中所有对象的值,javascript,arrays,underscore.js,Javascript,Arrays,Underscore.js,我有一个对象数组,其中包含一个名为“memory”的属性,其值在MB中。我需要将包含对象的数组转换为GB中的“memory”值。如何使用underline.js实现这一点 代码如下: var parseSize = function(obj){ if (obj === 0 ){ return 0; } else { return parseFloat(obj/1024).toFixed(2); } } var testData=[

我有一个对象数组,其中包含一个名为“memory”的属性,其值在
MB
中。我需要将包含对象的数组转换为
GB
中的“memory”值。如何使用
underline.js
实现这一点

代码如下:

 var parseSize = function(obj){
   if (obj === 0 ){
    return 0;
   } else {
     return  parseFloat(obj/1024).toFixed(2);
   }
 }

   var testData=[
       { name: 'ddd',Vcpu: 2, memory: 4096, os: 'Microsoft Windows Server 2008 (32-bit)'}, 
       { name: 'eee',Vcpu: 2, memory: 2040, os: 'Microsoft Windows Server 2008 (32-bit)'},
       { name: 'ddd',Vcpu: 2, memory: 4096, os: 'Microsoft Windows Server 2008 (32-bit)'}, 
       { name: 'eee',Vcpu: 2, memory: 2040, os: 'Microsoft Windows Server 2008 (32-bit)'}
   ];

  testData =_.invoke(testData , function(){
              testData['memory'] = parseSize(testData['memory']) + " GB";
            });
  console.log(testData);
上述代码不起作用。请告诉我哪里出了问题

添加JSFIDLE链接:

您可以使用。这是自ES5以来内置在JavaScript中的:

var result = testData.map(function(x) {
    x.memory = parseSize(x.memory) + ' GB'
    return x
})
你可以用。这是自ES5以来内置在JavaScript中的:

var result = testData.map(function(x) {
    x.memory = parseSize(x.memory) + ' GB'
    return x
})

您的代码中出现了哪些错误的答案:

  • 您应该使用
  • 您不应使用结果重新分配
    testData
  • 您应该在
    testData
    中的每个项目上访问
    “memory”
    属性,而不是在
    testData
    本身上
  • 因此,将代码的后半部分更改为:

    _.each(testData , function(datum){
        datum['memory'] = parseSize(datum['memory']) + " GB";
    });
    
    console.log(testData);
    

    您的代码中出现了哪些错误的答案:

  • 您应该使用
  • 您不应使用结果重新分配
    testData
  • 您应该在
    testData
    中的每个项目上访问
    “memory”
    属性,而不是在
    testData
    本身上
  • 因此,将代码的后半部分更改为:

    _.each(testData , function(datum){
        datum['memory'] = parseSize(datum['memory']) + " GB";
    });
    
    console.log(testData);
    
    使用下划线可以执行以下操作:

     _.each(testData , function( item ){
        item['memory'] = parseSize(item['memory']) + " GB";
     });
    

    如果你想支持像IE8这样的老浏览器,不要使用map或forEach

    使用下划线可以执行以下操作:

     _.each(testData , function( item ){
        item['memory'] = parseSize(item['memory']) + " GB";
     });
    

    如果你想支持像IE8这样的老浏览器,不要使用map或forEach