如何在Javascript中更新对象数组中每个对象的值?
我有一个包含多个对象的数组:如何在Javascript中更新对象数组中每个对象的值?,javascript,arrays,object,Javascript,Arrays,Object,我有一个包含多个对象的数组: [ {col:1} {col:1} {col:1} {col:3} {col:3} {col:9} {col:12} {col:13} ] 我想更新这个数组,使具有值1的列保持不变,而下一个值(这里是3)应该变为2,然后下一个值(这里是9)应该变为3,依此类推 O/p: 请提供帮助。您可以减少阵列: var data = [ { col: 1 }, { col: 1 }, { col: 1 }, { col: 3 }, { col: 3 }
[ {col:1} {col:1} {col:1} {col:3} {col:3} {col:9} {col:12} {col:13} ]
我想更新这个数组,使具有值1的列保持不变,而下一个值(这里是3)应该变为2,然后下一个值(这里是9)应该变为3,依此类推
O/p:
请提供帮助。您可以减少阵列:
var data = [
{ col: 1 }, { col: 1 },
{ col: 1 }, { col: 3 },
{ col: 3 }, { col: 9 },
{ col: 12 }, { col: 13 }
];
var result = data.reduce(function(r, i) {
r.previous !== i.col && r.newValue++;
r.previous = i.col;
r.arr.push({ col: r.newValue });
return r;
}, {arr: [], newValue: 0}).arr;
console.log(result);
我假设您的数组是按列排序的,否则您需要先对其排序。您可以减少数组:
var data = [
{ col: 1 }, { col: 1 },
{ col: 1 }, { col: 3 },
{ col: 3 }, { col: 9 },
{ col: 12 }, { col: 13 }
];
var result = data.reduce(function(r, i) {
r.previous !== i.col && r.newValue++;
r.previous = i.col;
r.arr.push({ col: r.newValue });
return r;
}, {arr: [], newValue: 0}).arr;
console.log(result);
我假设您的数组是按
col
排序的,否则您需要先对其进行排序。您可以运行for
循环来遍历数组,并使用if子句来检查某些值;假设数组对象名为myArray
:
var myArray = [ {col:1} {col:1} {col:1} {col:3} {col:3} {col:9} {col:12} {col:13} ];
for ( var i = 0; i < myArray.length; i++){
if ( myArray[i] === 3 ){
myArray[i] = 2;
}
// and so on.....
}
var myArray=[{col:1}{col:1}{col:3}{col:9}{col:12}{col:13}];
对于(var i=0;i
您可以运行for
循环来迭代数组,并使用if子句来检查某些值;假设数组对象名为myArray
:
var myArray = [ {col:1} {col:1} {col:1} {col:3} {col:3} {col:9} {col:12} {col:13} ];
for ( var i = 0; i < myArray.length; i++){
if ( myArray[i] === 3 ){
myArray[i] = 2;
}
// and so on.....
}
var myArray=[{col:1}{col:1}{col:3}{col:9}{col:12}{col:13}];
对于(var i=0;i
应该做需要做的事情。不依赖于原始数组中的任何特定顺序,并假定始终从1开始
var data=[{col:1}、{col:1}、{col:1}、{col:3}、{col:3}、{col:9}、{col:12}、{col:13}];
var uniqueValues=data.reduce(函数(a,c){
if(a.indexOf(c.col)=-1){
a、 推(c.col);
}
返回a;
},[])。排序(函数(a,b){
返回a-b;
}); // 产生[1,3,9,12,13]
var res=data.map(函数(项){
//使用唯一值中当前列值的索引..加1
item.col=uniqueValues.indexOf(item.col)+1;
退货项目;
});
document.getElementById('pre').innerHTML=JSON.stringify(res,null,4)
应该做需要做的事情。不依赖于原始数组中的任何特定顺序,并假定始终从1开始
var data=[{col:1}、{col:1}、{col:1}、{col:3}、{col:3}、{col:9}、{col:12}、{col:13}];
var uniqueValues=data.reduce(函数(a,c){
if(a.indexOf(c.col)=-1){
a、 推(c.col);
}
返回a;
},[])。排序(函数(a,b){
返回a-b;
}); // 产生[1,3,9,12,13]
var res=data.map(函数(项){
//使用唯一值中当前列值的索引..加1
item.col=uniqueValues.indexOf(item.col)+1;
退货项目;
});
document.getElementById('pre').innerHTML=JSON.stringify(res,null,4)
这里有一个相当简单的方法:
var arr=[{col:1},{col:1},{col:1},{col:3},{col:9},{col:12},{col:13}];
无功电流=0;
var-prevEl=-1;
对于(变量i=0;iprevEl?++电流:电流;
prevEl=el;
}
控制台日志(arr)代码>这里有一个相当简单的方法:
var arr=[{col:1},{col:1},{col:1},{col:3},{col:9},{col:12},{col:13}];
无功电流=0;
var-prevEl=-1;
对于(变量i=0;iprevEl?++电流:电流;
prevEl=el;
}
控制台日志(arr)代码>最终订单重要吗?你也试过什么?如果你表现出一种努力,你会得到更好的响应,因为最终的顺序很重要。我尝试创建一个值数组,然后更改每个值,但结果都很糟糕。输入数组是否保证按排序。col
?最终的顺序重要吗?你也试过什么?如果你表现出一种努力,你会得到更好的响应,因为最终的顺序确实很重要。我尝试创建一个值数组,然后更改每个值,但结果都变得一团糟。输入数组是否保证按.col
排序?为什么投票失败?它可能不是100%灵活,但在这种情况下,我看不出问题所在。每次myArray[I]
是一个对象时,输入数组可能都不相同。这个概念也不会根据填充值中的漏洞进行调整,而且绝对不可扩展。创建您自己的演示将看到出现问题,然后为什么投票失败?它可能不是100%灵活,但在这种情况下,我看不出问题所在。每次myArray[I]
是一个对象时,输入数组可能都不相同。这个概念也不会根据填充值中的漏洞进行调整,而且绝对不可扩展。创建您自己的演示将看到问题出现