Javascript 如何将对象中数组的索引值添加到键

Javascript 如何将对象中数组的索引值添加到键,javascript,Javascript,变量info中有一个对象: 0: {ProId: "Space", Name: "cake", Quantity: 1} 1: {ProId: "new", Name: "walk", Quantity: 1} 我试图将每个索引的数量值更改为index+1 我尝试将静态值设置为: for (var key in obj){ var value= obj[key]; value['Quantity'] = 5; } 预期O/p: console.log(info)

变量
info
中有一个对象:

0: {ProId: "Space", Name: "cake", Quantity: 1}
1: {ProId: "new", Name: "walk", Quantity: 1}
我试图将每个索引的数量值更改为
index+1

我尝试将静态值设置为:

  for (var key in obj){
    var value= obj[key];
    value['Quantity'] = 5;
  }
预期O/p:

console.log(info)
    0: {ProId: "Space", Name: "cake", Quantity: 1}
    1: {ProId: "new", Name: "walk", Quantity: 2}
    2: {............................Quantity: 3}.....
但是,我可以知道如何将上面提到的
数量
值与
索引
一起使用,并将
数量
添加到特定索引中
+
索引
。并使用
toString()
方法,因为您需要
String
格式的值。
var obj=[{ProId:“Space”,Name:“cake”,Quantity:“1”},{ProId:“new”,Name:“walk”,Quantity:“1”}]
对象forEach(函数(el、idx){
el.Quantity=(idx+parseInt(el.Quantity)).toString()
})

控制台日志(obj)
您可以映射数组并返回一个新数组,但将旧对象与具有更新的
数量
值的新对象合并,如:

const data=[{ProId:“Space”,Name:“cake”,Quantity:“1”},{ProId:“new”,Name:“walk”,Quantity:“1”}],
updateData=data.map((x,i)=>({…x,数量:++i}));
console.log(updateData)
.as控制台包装{max height:100%!重要;top:0;}
一些提示:

  • 如果您需要一个简单易懂的数据结构,可以使用对象的数组。这也提供了对迭代顺序的控制
  • 使用数字作为数值。如果以后需要(格式化)字符串,请将
    toString
    应用于该字符串
要获取属性的新值,可以对给定数据进行变异

使用:

  • 要使数组中的所有项无效
  • 函数的缩写形式
var数组=[{ProId:“Space”,Name:“cake”,Quantity:“1”},{ProId:“new”,Name:“walk”,Quantity:“1”}];
array.forEach((object,i)=>object.Quantity=i+1);
console.log(数组)尝试使用:

let obj = {
 '0': {ProId: "Space", Name: "cake", Quantity: "1"},
 '1': {ProId: "new", Name: "walk", Quantity: "1"}
}
for(key in obj) {
   let qty = String(Number(obj[key]['Quantity'])+Number(key))
   obj[key]['Quantity'] = qrt;
}

一种方法是映射当前数组

constinfo2=info.map((产品,索引)=>({…产品,数量:索引+1}));
如果您想将
数量
作为字符串,请执行以下操作
数量:索引+1+'
,或
数量:(索引+1).toString()
。任何适合您的都可以。

您也可以尝试以下方法:

let info={
0: {
ProId:“空间”,
名称:“蛋糕”,
数量:“1”
},
1: {
ProId:“新”,
名称:“步行”,
数量:“1”
}
}
设指数=1;
Object.values(info).map(function(val){
val.数量=指数;
索引++;
});

控制台日志(信息)我是在您只使用对象而不设置为数组的情况下创建的


让信息={
0:{ProId:“Space”,Name:“cake”,Quantity:“1”},
1:{ProId:“new”,Name:“walk”,Quantity:“2”},
2:{ProId:“foo”,Name:“bar”,Quantity:“3”}
}
函数增量量化(obj){
设_newInfo={};
for(对象的常量键。键(obj)){
信息[key].Quantity=parseInt(信息[key].Quantity,10)+1;
_newInfo[key]=info[key];
}
返回_newInfo;
}
/*
{
“0”:{ProId:'Space',Name:'cake',数量:2},
'1':{ProId:'new',Name:'walk',数量:3},
'2':{ProId:'foo',Name:'bar',数量:4}
}
*/
console.log(incrementQuantify(info));
短途:

let info={0:{ProId:“Space”,Name:“cake”,Quantity:“1”},1:{ProId:“new”,Name:“walk”,Quantity:“2”},2:{ProId:“foo”,Name:“bar”,Quantity:“3”}
for(Object.keys(info))info[key].Quantity=parseInt(info[key].Quantity,10)+1;
控制台日志(信息);
edit:我已经找到了一种处理数组的方法

let info=[
{ProId:“Space”,Name:“cake”,Quantity:“1”},
{ProId:“新”,名称:“行走”,数量:“2”},
{ProId:“foo”,Name:“bar”,Quantity:“3”}
]
函数增量量化(obj){
设newObj=obj;
newObj.Quantity=parseInt(obj.Quantity,10)+1;
返回newObj;
}
信息地图(增量量化);
/*
[
{ProId:'Space',Name:'cake',数量:2},
{ProId:'new',Name:'walk',数量:3},
{ProId:'foo',Name:'bar',数量:4}
]
*/
控制台日志(信息);
短途:

let info=[{ProId:“Space”,Name:“cake”,Quantity:“1”},{ProId:“new”,Name:“walk”,Quantity:“2”},{ProId:“foo”,Name:“bar”,Quantity:“3”}];图(o=>o.Quantity=parseInt(o.Quantity,10)+1);
控制台日志(信息);

希望有帮助

为什么你用一个对象而不是数组?你最好用数组来存储它们,因为不能保证对象顺序是一致的。我可能在这里猜到了,但我相信信息是作为控制台的数组。数组上的日志的格式与作者在其post@Codenewbie上的格式相同。
console.log的结果是什么(Array.isArray(信息))
?@VidushanChooriyakumaran-trueSo,你的变量
信息
确实是一个数组。你可以看看下面的解决方案,建议循环使用它,或者你可以试着解释一下发生了什么。但是我有我提到的数据,而不是你提到的上面的方式。你能分享吗实际数据格式,而不是控制台日志视图?