如何获取数组中对象的索引并将该值连接到对象键上?

How do you take the index of an object in an array and concatenate that value onto the object key?

我有这个数组:

var arr =   [
  {
    itemCategory: "cats",
    itemSku: "12345",
    itemSubTotal: 10,
    itemQuantity: 2,
  },
  {
    itemCategory: "dogs",
    itemSku: "56789",
    itemSubTotal: 5,
    itemQuantity: 1,
  }
]

我需要这种格式:

var arr =   [
  {
    itemCategory1: "cats",
    itemSku1: "12345",
    itemSubTotal1: 10,
    itemQuantity1: 2,
  },
  {
    itemCategory2: "dogs",
    itemSku2: "56789",
    itemSubTotal2: 5,
    itemQuantity2: 1,
  }
]

如何获取当前对象的索引号并将其附加到对象的键?我能做的最好的是:

var newArr=[];
 for (var i = 0; i < arr.length; i++){
    var obj = arr[i]; 
     for (var key in obj){
     var value = obj[key];
     var j = i;
     j = j+=1;
     newArr.push(key + j + ": " + value);     
     }
}

但它只给我一个平面数组:

0: "itemCategory1: cats"
1: "itemSku1: 12345"
2: "itemSubTotal1: 10"
3: "itemQuantity1: 2"
4: "itemCategory2: dogs"
5: "itemSku2: 56789"
6: "itemSubTotal2: 5"
7: "itemQuantity2: 1"

感谢我只是将它推入数组,但我不知道如何使用这些索引号更新对象键。

感谢您的帮助;非常感谢。

在您的代码中,这一行:

newArr.push(key + j + ": " + value);  

应该是这样的:

newArr.push({[key + j]: value});  

我认为将键映射到新对象可能更清晰

let arr = [{
    itemCategory: "cats",
    itemSku: "12345",
    itemSubTotal: 10,
    itemQuantity: 2,
  },
  {
    itemCategory: "dogs",
    itemSku: "56789",
    itemSubTotal: 5,
    itemQuantity: 1,
  }
]

arr = arr.map((a, i) => {
  let n = {}
  Object.keys(a).forEach(k => n[k + (i + 1)] = a[k]);
  return n;
})

console.log(arr)

工作演示:

// Input array
let arr = [
  {
    itemCategory: "cats",
    itemSku: "12345",
    itemSubTotal: 10,
    itemQuantity: 2,
  },
  {
    itemCategory: "dogs",
    itemSku: "56789",
    itemSubTotal: 5,
    itemQuantity: 1,
  }
];

// Calculation to add index in each property of an object.
arr.forEach((obj, index) => {
    Object.keys(obj).forEach((item) => {
    obj[item + (index + 1)] = obj[item];
    delete obj[item];
  })
});

// Result
console.log(arr);