Javascript 如何使第一个数组成为对象的标题和剩余数组行
我是新的编码和试图得到这个问题的权利。我尝试调用数组的索引,但它会打印出列。我们的开发环境是REPL.it,虚拟机使用节点v10.16.0,非常感谢您的帮助 输入Javascript 如何使第一个数组成为对象的标题和剩余数组行,javascript,Javascript,我是新的编码和试图得到这个问题的权利。我尝试调用数组的索引,但它会打印出列。我们的开发环境是REPL.it,虚拟机使用节点v10.16.0,非常感谢您的帮助 输入 tableData = [ ["first_name", "last_name", "city", "state"], ["Elisabeth", "Gardenar", "Toledo", "OH"], ["Jamaal", "Du", "Sylvania", "OH"], ["Kathlyn", "
tableData = [
["first_name", "last_name", "city", "state"],
["Elisabeth", "Gardenar", "Toledo", "OH"],
["Jamaal", "Du", "Sylvania", "OH"],
["Kathlyn", "Lavoie", "Maumee", "OH"]
]
output = [
{ first_name : "Elisabeth", last_name : "Gardenar", city: "Toledo", state : "OH" },
{ first_name : "Jamaal", last_name : "Du", city: "Sylvania", state : "OH" },
{ first_name : "Kathlyn", last_name : "Lavoie", city: "Maumee", state : "OH" }
]
所需输出
tableData = [
["first_name", "last_name", "city", "state"],
["Elisabeth", "Gardenar", "Toledo", "OH"],
["Jamaal", "Du", "Sylvania", "OH"],
["Kathlyn", "Lavoie", "Maumee", "OH"]
]
output = [
{ first_name : "Elisabeth", last_name : "Gardenar", city: "Toledo", state : "OH" },
{ first_name : "Jamaal", last_name : "Du", city: "Sylvania", state : "OH" },
{ first_name : "Kathlyn", last_name : "Lavoie", city: "Maumee", state : "OH" }
]
到目前为止,我尝试的是:
function convertTable(){
var p=console.log;
const [header,...rows] = tableData;
var tableObj = new Object;
var intermediateVal = [];
var finalArr = [];
for(var vals=0;vals<rows.length;vals++){
var row = rows[vals]
for (var key=0,val=0;key<header.length;key++,val++){
tableObj[header[key]]=row[val]
}
p(tableObj)
}
}
convertTable(tableData)
函数转换表(){
var p=console.log;
常量[标题,…行]=表格数据;
var tableObj=新对象;
var中间值=[];
var finalArr=[];
对于(var-vals=0;vals,您已经非常接近了,但是您需要为结果的每一行创建一个新对象,然后将该对象推送到finalArr
数组中
也不需要key
和val
变量,因为它们总是相同的
tableData=[
[“名”、“姓”、“市”、“州”],
[“伊丽莎白”、“加德纳”、“托莱多”、“哦”],
[“Jamal”、“Du”、“Sylvania”、“噢”],
[“Kathlyn”、“Lavoie”、“Maumee”、“噢”]
];
函数转换表(){
var p=console.log;
常量[标题,…行]=表格数据;
var finalArr=[];
对于(var VAL=0;VAL convertTable(tableData)
您还可以利用数组中包含的reduce方法
tableData = [
["Elisabeth", "Gardenar", "Toledo", "OH"],
["Jamaal", "Du", "Sylvania", "OH"],
["Kathlyn", "Lavoie", "Maumee", "OH"]
];
const obj = tableData.reduce((acc, cv, index) => {
acc.push({
first_name: cv[0],
last_name: cv[1],
city: cv[2],
state: cv[3]
});
return acc
},[]);
console.log(obj);
// [ { first_name: 'Elisabeth',
// last_name: 'Gardenar',
// city: 'Toledo',
// state: 'OH' },
// { first_name: 'Jamaal',
// last_name: 'Du',
// city: 'Sylvania',
// state: 'OH' },
// { first_name: 'Kathlyn',
// last_name: 'Lavoie',
// city: 'Maumee',
// state: 'OH' } ]
下面是一个使用array reduce的潜在解决方案
const tableData=[
[“名”、“姓”、“市”、“州”],
[“伊丽莎白”、“加德纳”、“托莱多”、“哦”],
[“Jamal”、“Du”、“Sylvania”、“噢”],
[“Kathlyn”、“Lavoie”、“Maumee”、“噢”]
];
const keys=tableData.shift();
const formatted=tableData.reduce((agg,arr)=>{
累计推送(arr.reduce)(对象、项目、索引)=>{
obj[键[索引]]=项;
返回obj;
}, {}));
返回agg;
}, [])
console.log(格式化);
另一种功能方法
const tableData=[
[“名”、“姓”、“市”、“州”],
[“伊丽莎白”、“加德纳”、“托莱多”、“哦”],
[“Jamal”、“Du”、“Sylvania”、“噢”],
[“Kathlyn”、“Lavoie”、“Maumee”、“噢”]
]
常量[键,…值]=表格数据
常量获取值=(行)=>{
常量[名字、姓氏、城市、州]=行
返回{姓、名、市、州}
}
常量输出=values.map(获取值)
console.log(输出)
太长了,读不下去了,谢谢。谢谢你的评论,但是对象键必须是动态的,不是静态的。否则我会用这个方法。谢谢你的评论,但是对象键必须是动态的而不是静态的。地图种类让我困惑,我真的无法进入它。TL;Dr:谢谢,这是很棒的工作。Acutar评论:NICK!!!!!!!!!!!这是个怪物!令人惊讶。我只是觉得很难理解。我对编程非常陌生。如果我的老师将我的代码与你的代码进行比较,他们就会知道我在作业中作弊。我在行上尝试了Array.shift()
方法。我没有想到要将它用作标题。我很沮丧,“为什么我不能让shift()在循环中循环!!”因为这毫无意义。但是你很了不起。