Javascript 在嵌套映射中设置索引值
我在嵌套贴图中设置值时遇到问题,指定的值只取最后一个索引值。这是我做错了还是我错过了什么?谢谢 以下是我的数据:Javascript 在嵌套映射中设置索引值,javascript,arrays,ramda.js,Javascript,Arrays,Ramda.js,我在嵌套贴图中设置值时遇到问题,指定的值只取最后一个索引值。这是我做错了还是我错过了什么?谢谢 以下是我的数据: const items = [{ id: 'item1' }, { id: 'item2' }] const itemDetails = [{ name: 'data A', class: 'A' }, { name: 'data B', class: 'B' }, { name: 'data C', class: 'C' }] 我预期的结果是:
const items = [{
id: 'item1'
}, {
id: 'item2'
}]
const itemDetails = [{
name: 'data A',
class: 'A'
}, {
name: 'data B',
class: 'B'
}, {
name: 'data C',
class: 'C'
}]
我预期的结果是:
[
[
{ name: 'data A', class: 'A', itemIndex: 0, itemId: 'item1' },
{ name: 'data B', class: 'B', itemIndex: 0, itemId: 'item1' },
{ name: 'data C', class: 'C', itemIndex: 0, itemId: 'item1' }
],
[
{ name: 'data A', class: 'A', itemIndex: 1, itemId: 'item2' },
{ name: 'data B', class: 'B', itemIndex: 1, itemId: 'item2' },
{ name: 'data C', class: 'C', itemIndex: 1, itemId: 'item2' }
]
]
但我使用嵌套映射得到了这个结果:
[
[
{ name: 'data A', class: 'A', itemIndex: 1, itemId: 'item2' },
{ name: 'data B', class: 'B', itemIndex: 1, itemId: 'item2' },
{ name: 'data C', class: 'C', itemIndex: 1, itemId: 'item2' }
],
[
{ name: 'data A', class: 'A', itemIndex: 1, itemId: 'item2' },
{ name: 'data B', class: 'B', itemIndex: 1, itemId: 'item2' },
{ name: 'data C', class: 'C', itemIndex: 1, itemId: 'item2' }
]
]
我的代码:
const result = items.map((item, itemIdx) => {
return itemDetails.map(detail => {
detail.itemIndex = itemIdx
detail.itemId = item.id
return detail
})
})
请先创建原始细节的副本,然后对其进行修改 这应该很好:
const result = items.map((item, itemIdx) => {
return itemDetails.map(detail => {
const newDetail = {...detail}
newDetail.itemIndex = itemIdx
newDetail.itemId = item.id
return newDetail;
})
})
请先创建原始细节的副本,然后对其进行修改 这应该很好:
const result = items.map((item, itemIdx) => {
return itemDetails.map(detail => {
const newDetail = {...detail}
newDetail.itemIndex = itemIdx
newDetail.itemId = item.id
return newDetail;
})
})
var resArr=[];
//我在循环中使用.length如果您的数据很大,您可以预先计算变量中的值//并使用它们
对于(var i=0;ivar resArr=[];
//我在循环中使用.length如果您的数据很大,您可以预先计算变量中的值//并使用它们
对于(var i=0;i较少的代码:
const result = items.map((item, itemIndex) =>
itemDetails.map(detail => ({...detail, itemIndex, itemId: item.id})))
更少的代码:
const result = items.map((item, itemIndex) =>
itemDetails.map(detail => ({...detail, itemIndex, itemId: item.id})))
我不知道为什么这个标签是“ramda.js”。问题中没有ramda,也没有任何使用它的请求。但是我也不认为ramda会对Rox的优秀答案做任何改进。对不起,我使用了“ramda.js”标签,因为我在其他代码中也使用了一些ramda。我不确定为什么这个标签是“ramda.js”.问题中没有Ramda,也没有任何使用它的请求。但我也不认为Ramda会对Rox的优秀答案做任何改进。很抱歉,我使用了“Ramda.js”标记,因为我在其他代码中也使用了一些Ramda。