Javascript 将嵌套数组转换为对象数组问题
我正在尝试将这个嵌套数组数据转换为一个对象数组。这是数据Javascript 将嵌套数组转换为对象数组问题,javascript,arrays,object,javascript-objects,Javascript,Arrays,Object,Javascript Objects,我正在尝试将这个嵌套数组数据转换为一个对象数组。这是数据 const tableData = [ ["first_name", "last_name", "city", "state"], ["June", "Gregory", "Hammond", "IN"], ["James", "Wynn", "Gary", "IN"], ["Craig", "Norman", "Schererville", "IN"] ] 下面是输出应该是什么 [ { fi
const tableData = [
["first_name", "last_name", "city", "state"],
["June", "Gregory", "Hammond", "IN"],
["James", "Wynn", "Gary", "IN"],
["Craig", "Norman", "Schererville", "IN"]
]
下面是输出应该是什么
[
{ first_name : "June", last_name : "Gregory", city: "Hammond", state : "IN" },
{ first_name : "James", last_name : "Wynn", city: "Gary", state : "IN" },
{ first_name : "Craig", last_name : "Norman", city: "Schererville", state : "IN" }
]
这是我的密码
function convertTable(table_data) {
var result = []
var key, value
for (var i=0; i<table_data.length; i++) {
var employee = {}
for (var j=0; j<table_data[i].length; j++) {
key = table_data[i][j][0]
value = table_data[i][j][1]
employee[key] = value
}
result.push(employee)
}
return result
}
var input = [
["first_name", "last_name", "city", "state"],
["June", "Gregory", "Hammond", "IN"],
["James", "Wynn", "Gary", "IN"],
["Craig", "Norman", "Schererville", "IN"]
]
console.log(convertTable(input));
函数转换表(表_数据){
var结果=[]
变量键,值
对于(var i=0;i首先,两个值都使用一个字符,这是不必要的
key = table_data[i][j][0]
// ^^^
value = table_data[i][j][1]
// ^^^
然后您需要两个更改,一个是外部循环省略键,而内部使用第一行作为键。请参见代码中的注释
另一个更改是在函数顶部声明所有变量
函数转换表(表_数据){
var结果=[],
关键,价值,,
雇员,,
i、 j;
对于(i=1;i
。作为控制台包装{max height:100%!important;top:0;}
试试这个
你只是把一些索引放错了地方,除了一切都很好。
只要与你的功能相匹配,你就能很容易地找到你错过的地方。
const tableData=[
[“名”、“姓”、“市”、“州”],
[“六月”、“格雷戈里”、“哈蒙德”、“在”],
[“詹姆斯”、“韦恩”、“加里”、“在”],
[“克雷格”、“诺曼”、“舍尔维尔”、“在”]
]
函数转换表(表_数据){
var结果=[]
变量键,值
对于(var i=1;i您访问的是根数组上的3级
深度,因此您可以在2级
数组中索引字符串
使用此命令:key=table_data[i][j][0]
访问索引i
上数组中放置的j
字符串的第一个字符
使用这个:value=table_data[i][j][1]
您正在访问索引i
上数组中放置的j
字符串的第二个字符
另外,您已经知道第一个数组是键(或头),因此不想在其上循环。请查看下一个示例:
函数转换表(表_数据)
{
var结果=[];
var键,值;
对于(变量i=1;i console.log(convertable(input));
您的代码包含三个错误,可以按如下方式修复:
从i=1
开始迭代外部循环以跳过索引为0的标题
使用tableData[0][j]
而不是tableData[i][j][0]
索引到标题数组中,这是一个维度太多(访问字符),并且不正确地包含行索引i
使用tableData[i][j]
而不是tableData[i][j][1]
索引到数据表中,后者再次访问字符串中的字符
除此之外,我建议注意间距、分号和大小写约定。这将使您的代码更易于理解和调试
综合起来可以得出:
函数转换表(tableData){
var结果=[];
var键;
var值;
对于(var i=1;i console.log(convertable(input));
这是一个简洁的版本,使用:
const data=[[“名字”、“姓氏”、“城市”、“州”]、[“六月”、“格雷戈里”、“哈蒙德”、“IN”]、[“詹姆斯”、“韦恩”、“加里”、“IN”]、[“克雷格”、“诺曼”、“舍尔维尔”、“IN”]]
const result=data.reduce((r,c,i,arr)=>{
如果(i)r.push(c.reduce((a,b,j)=>(a[arr[0][j]]=b,a),{}))
返回r
}, [])
console.log(result)
-1,还没有足够的减少;):)有没有“足够的减少”这样的说法?请看一下:。如果答案对你有帮助,请遵循这些建议。请记住,人们会花时间和精力帮助你,并会感谢你的反馈。下面有一些不错的答案。。。