我无法创建此逻辑。需要动态添加index和subIndex字段

I am unable to create this logic. Need to add index and subIndex fields dynamically

我无法创建此逻辑,已尝试数小时。我只需要添加 index 和 subIndex 属性,并增加不同 eventTicketId 的行为。

对于单票,例如eventTicketId:461。我必须有 2 个字段,例如第一张票及其第一个值,然后是第一张票及其第二个值。其他门票也是如此,例如 eventTicketId:463 它将像第一张门票及其第一个价值,第一张门票及其第二个价值,第二张门票及其第一个价值以及最后第二张门票及其第二个价值。

原始数组:

 let ticketArray = [
 {
    "eventTicketId": "461",
    "title": "Name 1",
    "value": "salman",
    "type": 'name'
 },
{
    "eventTicketId": "461",
    "title": "CNIC 1",
    "value": "31221321",
    "type": 'cnic'

},
{
    "eventTicketId": "462",
    "title": "Name 1",
    "value": "asdfasdf",
    "type": 'name'

},
{
    "eventTicketId": "462",
    "title": "CNIC 1",
    "value": "31221321",
    "type": 'cnic'

},
{
    "eventTicketId": "463",
    "title": "Name 1",
    "value": "Adsadsa",
    "type": 'name'

},
{
    "eventTicketId": "463",
    "title": "CNIC 1",
    "value": "321312312",
    "type": 'cnic'
},
{
    "eventTicketId": "463",
    "title": "Name 2",
    "value": "Adsadsa",
    "type": 'name'

},
{
    "eventTicketId": "463",
    "title": "CNIC 2",
    "value": "133213",
    "type": 'cnic'
}];

所需数组:

 let ticketArray = [
 {
    "eventTicketId": "461",
    "title": "Name 1",
    "value": "salman",
    "type": 'name',
    "index": "1",
    "subIndex": "1"
}, {
    "eventTicketId": "461",
    "title": "CNIC 1",
    "value": "31221321",
    "type": 'cnic',
    "index": "1",
    "subIndex": "2"
},
{
    "eventTicketId": "462",
    "title": "Name 1",
    "value": "asdfasdf",
    "type": 'name',
    "index": "1",
    "subIndex": "1"


},
{
    "eventTicketId": "462",
    "title": "CNIC 1",
    "value": "31221321",
    "type": 'cnic',
    "index": "1",
    "subIndex": "2"

},
{
    "eventTicketId": "463",
    "title": "Name 2",
    "value": "Adsadsa",
    "type": 'name',
    "index": "1",
    "subIndex": "1"

},
{
    "eventTicketId": "463",
    "title": "CNIC 2",
    "value": "133213",
    "type": 'cnic',
    "index": "1",
    "subIndex": "2"
},

{
    "eventTicketId": "463",
    "title": "Name 1",
    "value": "Adsadsa",
    "type": 'name',
    "index": "2",
    "subIndex": "1"
},
{
    "eventTicketId": "463",
    "title": "CNIC 1",
    "value": "321312312",
    "type": 'cnic',
    "index": "2",
    "subIndex": "2"
},];

我制作了一个片段,其中包含我认为可能会解决您的问题的内容。

 let ticketArray = [
 {
    "eventTicketId": "461",
    "title": "Name 1",
    "value": "salman",
    "type": 'name'
 },
{
    "eventTicketId": "461",
    "title": "CNIC 1",
    "value": "31221321",
    "type": 'cnic'

},
{
    "eventTicketId": "462",
    "title": "Name 1",
    "value": "asdfasdf",
    "type": 'name'

},
{
    "eventTicketId": "462",
    "title": "CNIC 1",
    "value": "31221321",
    "type": 'cnic'

},
{
    "eventTicketId": "463",
    "title": "Name 1",
    "value": "Adsadsa",
    "type": 'name'

},
{
    "eventTicketId": "463",
    "title": "CNIC 1",
    "value": "321312312",
    "type": 'cnic'
},
{
    "eventTicketId": "463",
    "title": "Name 2",
    "value": "Adsadsa",
    "type": 'name'

},
{
    "eventTicketId": "463",
    "title": "CNIC 2",
    "value": "133213",
    "type": 'cnic'
}];

const tickets = {};
const result = ticketArray.map(ticket => {
  let subIndex = 1
  if (tickets[ticket.eventTicketId]) {
    tickets[ticket.eventTicketId] += 1
  } else {
    tickets[ticket.eventTicketId] = 1
  }
  let index = Math.ceil(tickets[ticket.eventTicketId] / 2);
  subIndex = tickets[ticket.eventTicketId] % 2 == 0 ? 2 : 1
  return {...ticket, index, subIndex}
})

console.log(result)