gpt4 book ai didi

javascript - 对象声明中的两个映射函数

转载 作者:行者123 更新时间:2023-11-30 11:22:13 25 4
gpt4 key购买 nike

在声明一个对象时,如何遍历多个数组并将它们“配对”?假设有两个数组包含相同数量的数据。我想映射它们中的每一个并分配给对象属性。

这是我想要实现的:

{
name: john,
surname: doe,
datasets: [{
data: 1,
vehicle: car,
color: red
},
{
data: 2,
vehicle: car,
color: blue,
},
{
data: 3,
vehicle: car,
color: green
}]
}

这是我所做的:

function Constructor (name, surname, data, vehicle, colors) {
this.name = name;
this.surname = surname;
this.data = data;
this.vehicle = vehicle;
this.colors = colors;

this.person = {
name: name,
surname: surname,
datasets: [{
data: data.map(data => ({
data,
vehicle: vehicle,
color: colors.map(color => ({
color
}))
})),

}]
}

};


var testing = new Constructor ('john', 'doe', [1,2,3], 'car', ['red', 'blue', 'green']);

console.log (testing.person);

最佳答案

如果 datacolor 总是具有相同的长度,您可以在 map 函数中使用 index,它作为第二个参数传递:

data.map((data, i) => ({
data,
vehicle: vehicle,
color: colors[i]
})
)

对于不匹配的数据集(即一个数据集比另一个数据集多),您可以采用多种方法。

  1. 使用默认颜色(如果 data 有更多项):

    data.map((data, i) => ({ 
    // ...
    color: colors[i] || "black"
    })
  2. 如果数据集不对齐则抛出错误:

    if (data.length !== colors.length) throw "data length does not match color length";
  3. 取最短的数据集并丢弃多余的数据

    Array.from(
    { length: Math.min(data.length, colors.length) },
    (_, i) => ({
    data: data[i], color: colors[i], vehicle
    })
    );

当然还有更多!

关于javascript - 对象声明中的两个映射函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49405372/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com