Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在嵌套映射中设置索引值_Javascript_Arrays_Ramda.js - Fatal编程技术网

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;i
var 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。