如何在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]
是一个对象时,输入数组可能都不相同。这个概念也不会根据填充值中的漏洞进行调整,而且绝对不可扩展。创建您自己的演示将看到问题出现