Javascript 如何在没有硬编码的情况下解决数组问题?
如何生成这些对象?Javascript 如何在没有硬编码的情况下解决数组问题?,javascript,arrays,Javascript,Arrays,如何生成这些对象? let obs = [ { car: cars[0], color: colors[0] }, { car: cars[1], color: colors[1] }, { car: cars[2], color: colors[2] } ] 无需硬编码即可从这些数组中删除 let cars = ["audi", "audi", "audi"] let colors = ["darkgrey", "red", "silver"] 通过从每个数组中选择
let obs = [
{ car: cars[0], color: colors[0] },
{ car: cars[1], color: colors[1] },
{ car: cars[2], color: colors[2] }
]
无需硬编码即可从这些数组中删除
let cars = ["audi", "audi", "audi"]
let colors = ["darkgrey", "red", "silver"]
通过从每个数组中选择相应的元素,可以使用带有索引的
forEach
循环和push
新对象:
let cars=[“奥迪”、“奥迪”、“奥迪”];
让颜色=[“黑色”、“红色”、“银色”];
让结果=[];
cars.forEach((car,i)=>{
结果.推送({car,color:colors[i]});
});
控制台日志(结果)代码>有很多方法可以做到这一点。就我个人而言,我更喜欢使用数组函数,它将创建一个新的数组
您可以对任何数组应用map
方法,并使用它的索引从另一个数组中检索值
let cars=[“奥迪”、“奥迪”、“奥迪”]
让颜色=[“黑色”、“红色”、“银色”];
让结果=汽车。地图((项目,索引)=>{
返回{
汽车:项目,,
颜色:颜色[索引]
}
});
console.log(结果)
用于生成对象数组:
const cars=[“奥迪”、“奥迪”、“奥迪”]
常量颜色=[“黑色”、“红色”、“银色”]
const result=cars.map((car,i)=>({
汽车
颜色:颜色[i]
}));
控制台日志(结果)代码>又花了五分钟,这也奏效了谢谢各位:)
let cars=[“奥迪”、“奥迪克斯”、“奥迪洛弗”]
让颜色=[“银色”、“黑色”、“白色”]
函数matchCars(){
让匹配项=[]
对于(设i=0;i
这个问题实际上是:如何转换一个
一个简单、通用的解决方案如下所示:
让aos=soa2aos(
[‘汽车’、[‘思域’、‘集成’],
[“年”、[1994年、2001年]],
[‘颜色’、[‘灰色’、‘橙色’]]
);
控制台日志(aos);
功能soa2aos(…soa){
返回soa[0]。减少((aos,arr,i)=>{
设o=aos[i]={};
soa.forEach(([name,dat])=>o[name]=dat[i]);
返回aos;
}, []);
}
可能重复我只需要澄清一下,汽车和颜色是否始终相同?一次性代码可能不是一次性问题的问题,但是编写通用代码通常更好,因为可重用性始终是管理复杂性的一个因素。Array.prototype.map
在这里也可以很好地工作-这样您就不必手动定义数组/推送项:)
let cars = ["audi", "audiXL", "audiRover"]
let colors = ["silver", "darkgrey", "white"]
function matchCars () {
let matches = []
for(let i = 0; i < cars.length; i++) {
let object = {car: cars[i], color: colors[i]}
matches.push(object)
}
return matches
}
const answer = matchCars()
console.log(answer);