使用字段名创建新的Javascript数组

使用字段名创建新的Javascript数组,javascript,arrays,field-names,Javascript,Arrays,Field Names,我有一个正在读取到数组中的数据文件。原始数据文件创建的数组如下所示: var originalArray = [ {vendor: 2001, bananas: 50, apples:75, oranges: 12}, {vendor: 2002, bananas: 25, apples:60, oranges: 82}, {vendor: 2003, bananas: 36, apples:41, oran

我有一个正在读取到数组中的数据文件。原始数据文件创建的数组如下所示:

var originalArray = [ {vendor: 2001, bananas: 50, apples:75, oranges: 12},
                      {vendor: 2002, bananas: 25, apples:60, oranges: 82},
                      {vendor: 2003, bananas: 36, apples:41, oranges: 73},
                      {vendor: 2004, bananas: 59, apples:62, oranges: 87}];
我使用.filter从数组中选择了一个供应商。这工作正常,但是我需要将新数组(仅包含一个供应商代码的数组)更改为如下所示的数组

var desiredArray = [ {fruitName: "bananas", qty: 50},
                     {fruitName: "apples", qty: 75 },
                     {fruitName: "oranges", qty: 12} ];

使用.push可以获得数量,但如何才能将水果名从字段名转换为水果名字段中的值

如果您已经选择了供应商对象,您可以这样做来创建desiredArray


如果您已获得选定的供应商对象,则可以执行类似操作来创建desiredArray

试试这个

var vendorId = 2001;

var desiredArray = originalArray.filter( function( v ) {

    return v.vendor == vendorId ;

}).map( function( v ){

    var s = [];

    for ( var i in v ){

        if ( i == 'vendor' ) continue;

        s.push( {fruitName: i , qty: v[i] } );            
    }
    return s;

}).pop(); 
所需阵列具有价值

[ {fruitName: "bananas", qty: 50},
  {fruitName: "apples", qty: 75 },
  {fruitName: "oranges", qty: 12} ]
试试这个

var vendorId = 2001;

var desiredArray = originalArray.filter( function( v ) {

    return v.vendor == vendorId ;

}).map( function( v ){

    var s = [];

    for ( var i in v ){

        if ( i == 'vendor' ) continue;

        s.push( {fruitName: i , qty: v[i] } );            
    }
    return s;

}).pop(); 
所需阵列具有价值

[ {fruitName: "bananas", qty: 50},
  {fruitName: "apples", qty: 75 },
  {fruitName: "oranges", qty: 12} ]
使用for…in循环:

使用for…in循环:

过滤器

    var filteredArray = [];
    for (var i=0; i < a.length; i++){
    if(a[i].vendor === matchedVendor){
     filteredArray = a[i];
          break;
     }}


    var desiredArray = [];

    for(prop in filteredArray){
    if(prop !== "vendor"){
        desiredArray.push({fruitName:prop,qty:filteredArray[prop]});
    }
 }
过滤器

    var filteredArray = [];
    for (var i=0; i < a.length; i++){
    if(a[i].vendor === matchedVendor){
     filteredArray = a[i];
          break;
     }}


    var desiredArray = [];

    for(prop in filteredArray){
    if(prop !== "vendor"){
        desiredArray.push({fruitName:prop,qty:filteredArray[prop]});
    }
 }

显示与.push一起使用的代码,这可能是一个简单的修复程序。我将使用.push填充结果数组,如下所示。但是,它没有给我字段名,结果数组只包含一个元素和三个值,而不是三个元素和每个值。var desiredVendor=originalArray.filtermatchVendor;var结果=[];forvar i=0;i var filteredArray = []; for (var i=0; i < a.length; i++){ if(a[i].vendor === matchedVendor){ filteredArray = a[i]; break; }} var desiredArray = []; for(prop in filteredArray){ if(prop !== "vendor"){ desiredArray.push({fruitName:prop,qty:filteredArray[prop]}); } }