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