Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javascript:使用第一个';第'行;定义属性的步骤_Javascript_Arrays - Fatal编程技术网

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);