javascript:使用第一个';第'行;定义属性的步骤
为了填充接收行对象数组的数据网格, 我正在寻找一个很好的解决方案来转换如下数组:javascript:使用第一个';第'行;定义属性的步骤,javascript,arrays,Javascript,Arrays,为了填充接收行对象数组的数据网格, 我正在寻找一个很好的解决方案来转换如下数组: [ ['country', 'population'], ['someplace', 100], ['otherplace', 200] ] [ {country: 'someplace', population: 100}, {country: 'otherplace', population: 200}, ] 进入一个对象数组,例如: [ ['country', 'population'], ['s
[
['country', 'population'],
['someplace', 100],
['otherplace', 200]
]
[
{country: 'someplace', population: 100},
{country: 'otherplace', population: 200},
]
进入一个对象数组,例如:
[
['country', 'population'],
['someplace', 100],
['otherplace', 200]
]
[
{country: 'someplace', population: 100},
{country: 'otherplace', population: 200},
]
更新:
这是我目前使用的解决方案:
function arrayToRows(arr) {
var defs = [];
var data = [];
var rows = [];
var r;
var obj;
var headerRow = arr.shift(); //remove header row
defs = headerRow.map(function(cell) {
return {
field: cell,
displayName: cell
}
});
for (var i = 0; i < arr.length; i++) {
r = arr[i];
obj = {};
for (var j = 0; j < defs.length; j++) {
obj[defs[j].field] = r[j];
}
rows.push(obj);
}
return rows;
函数阵列行(arr){
var-defs=[];
var数据=[];
var行=[];
var-r;
var-obj;
var headerRow=arr.shift();//删除标题行
defs=头错误映射(函数(单元){
返回{
字段:单元格,
显示名称:单元格
}
});
对于(变量i=0;i
}var数组=[
[“国家”、“人口”],
['someplace',100],
['otherplace',200]
];
var objects=[],一个=数组[0][0],两个=数组[0][1];
对于(变量i=1,len=array.length;i
函数对象(数组){
var new_数组=[];
var头=[];
对于(var i=0;i0){
新的_阵列推送(obj);
}
}
返回新的_数组;
}
要做到这一点,您需要使用一些迭代!下面的代码是一个未经测试的示例,用于演示您必须执行的操作
function convertToObjectArray(table)
{
var output = [];
for(var i = 1; i < table.length; i++)
{
var obj = {};
for(var x = 0; x < table[0].length; x++)
obj[table[0][x]] = table[i][x];
output.push(obj);
}
return output;
}
函数转换器对象数组(表)
{
var输出=[];
对于(变量i=1;i
此示例的另一个注意事项是,您应该编辑此字段,以确保后续数组的长度相同,否则可能会遇到空值 使用map和forEach的组合,可以将后续数组元素映射到第一个元素中指定的列
var arr = [
['country', 'population'],
['someplace', 100],
['otherplace', 200]
];
var cols = arr.shift();
newArr = arr.map(function(element,index){
var newObj = {};
element.forEach(function(data,index){
newObj[cols[index]]=data;
});
return newObj;
});
嘿,通过使用subline.js()库,您可以非常轻松地完成以下任务:
var array = [['country', 'population'],['someplace', 100],['otherplace', 200]];
var output = [];
for(var index=1; index<array.length; index++){
output.push(_.object(array[0],array[index]));
}
console.log(output);
var数组=[['country','population'],['someplace',100],[otherplace',200];
var输出=[];
对于(var指数=1;指数
let数组=[['country','population'],['someplace',100],[otherplace',200];
让[键,…行]=数组;
让result=rows.map(r=>(keys.reduce((o,k,i)=>(o[k]=r[i],o),{}));
console.log(result)
如果我理解正确,这并不是对所问问题的准确回答。第一行应该是动态的(不总是国家/人口)所以这不能满足OP的需要。@Brett我以为这只是为了演示。不用担心,编辑。键数组的长度可能也是动态的…@Bergi Yep,我应该进一步修改我的代码,你是对的,但我已经睡着了。不过,你的答案好多了!你试过什么了吗?是的,我已经解决了它,但对更好的解决方案感兴趣。将用我的解决方案更新答案。…['country','population']
应该是动态的
var array = [['country', 'population'],['someplace', 100],['otherplace', 200]];
var output = [];
for(var index=1; index<array.length; index++){
output.push(_.object(array[0],array[index]));
}
console.log(output);