如何创建一个对象使用匹配每个元素从数组?



我将构建这个对象结构:

{ product:'example1', description: 'description1', price: 123 }

和更多的数组,它增加。

[
{ product:'example1', description: 'description1', price: 123 },
{ product:'example2', description: 'description2', price: 123 },
{ product:'example3', description: 'description3', price: 123 },
]

我有三个数组迭代,需要匹配你的索引,如

{"products":elem[0], "description": description[0], "price": price[0]}

我试过了:

let products = ['Master','Luxe','Simple'];
let ob = []
products.forEach((elem) => {
let price = ['200','340','203'];
let description = ['bla2','bla3','bla4'];
ob.push({"products":elem, "description": description, "price": price});

但是它在descriptionprice中创建了一个数组,我想将每个元素的索引

但是我卡住了。有人能帮我吗?

首先,您应该将pricedescription数组移到Array.forEach()的范围之外。这在本例中没有什么区别,但是良好的编程意识告诉您,这些列表将来自一些外部源,因此应该与products数组保持在相同的作用域内。

其次,在提供给forEach的回调中,您可以接受第二个参数,该参数是当前由forEach处理的元素的index

最后,当将对象压入新数组时,访问相应列表的索引,即description[index]price[index]。否则,程序无法知道您想从列表中访问哪个索引。相反,您指示程序每次都将数组压入。

我已经提供了下面的代码片段:

let products = ['Master', 'Luxe', 'Simple'];
let price = ['200', '340', '203'];
let description = ['bla2', 'bla3', 'bla4'];
let ob = []
products.forEach((elem, index) => {
ob.push({ 
"products": products[index], 
"description": description[index], 
"price": price[index]
});
});
console.log(ob);

forEach的第二个参数是当前索引。你只需要传递它来通过索引选择其他数组元素。如:

let price = ['200','340','203'];
let description = ['bla2','bla3','bla4'];
products.forEach((elem, index) => {
ob.push({"products":elem, "description": description[index], "price": price[index]});
})

请注意,如果price或description数组的元素较少,则此操作将中断,因此包含一个检查以确保数组正确。长度足够大

最新更新