使用字段名创建新的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]});
}
}