我正在循环通过我的2维数组,并将这些项目推入一个带有对象标题的新数组。 我正在尝试根据一个条件更改对象的名称。
索引1确定此项目在其类别中的等级。 我想组织我的新数组,并有一个读数如下的条件
if(data[0][1] === 1) {
' firstRank': data[i][1]
} else if (data[0][1] === 2) {
'secondRank': data[i][1]
} else if (data[0][1] === 3) {
'thirdRank': data[i][1]
}
下面是我的代码示例:
null
const data = [
["Online", 1 ,3.2 ],
["Appointment", 2 , 2.9],
["Store", 3, 1.8],
] ;
const newData = []
for (let i = 0; i < data[0].length; i++) {
newData.push({
'title': data[i][0],
'rank': data[i][1],
'percentage': data[i][2],
})
}
console.log(newData)
null
我的预期结果是newdata
数组将对象秩返回为firstRank,secondRank或thirdRank
,这取决于条件中的值等于什么。 我已经尝试包括这个排名在我的for循环,但我得到了语法错误。 下面是我所尝试的:
for (let i = 0; i < data[0].length; i++) {
newData.push({
'title': data[i][0],
if(data[0][1] === 1) {
' firstRank': data[i][1]
} else if (data[0][1] === 2) {
'secondRank': data[i][1]
} else if (data[0][1] === 3) {
'thirdRank': data[i][1]
}
'percentage': data[i][2],
})
}
您可能希望使用if语句构造对象,然后将其推送到数组上。
for (let i = 0; i < data[0].length; i++) {
// start with what we *know* is going to go into the object
const myObj = {
'title': data[i][0],
'percentage': data[i][2],
};
// add additional parts to it based on conditions
if (data[0][1] === 1) {
myObj.firstRank = data[i][1];
} else if (data[0][1] === 2) {
myObj.secondRank = data[i][1];
} else if (data[0][1] === 3) {
myObj.thirdRank = data[i][1];
}
// object all ready, add it to the array!
newData.push(myObj);
}
您可以使用map并在map内创建对象:
const data = [
["Online", 1 ,3.2 ],
["Appointment", 2 , 2.9],
["Store", 3, 1.8],
] ;
const newData = []
data.map(el => {
myObj = {
title: el[0],
percentage: el[2],
};
if(el[1] === 1) {
myObj['firstRank'] = el[1];
} else if (el[1] === 2) {
myObj['secondRank'] =el[1];
} else if (el[1] === 3) {
myObj['thirdRank'] = el[1];
}
newData.push(myObj);
});
您知道每个元素的位置:标题,等级和百分比。
标题是第一个元素,百分比是最后一个元素,排名是第一个和最后一个元素之间的元素。
因此,您可以这样做,其中rank将是一个值数组,其中rank-nth与be数组位置-nth+1:
null
const data = [
["Online", 1 ,3.2 ],
["Appointment", 2 , 4, 5, 2.9],
["Store", 3, 1.8],
];
const newData = data.map((row) => {
const title = row[0];
const rank = row.slice(1, row.length-1);
const percentage = row[row.length - 1];
return {
title,
rank,
percentage
}
})
console.log(newData);