5 回答

TA貢獻(xiàn)1794條經(jīng)驗(yàn) 獲得超8個(gè)贊
let idx = 0;
arr.map((item, i) => {
if(i == 0 || arr[i].ModuleID != arr[i-1].ModuleID)
idx = 0;
else
idx++;
item['index'] = idx;
});

TA貢獻(xiàn)1866條經(jīng)驗(yàn) 獲得超5個(gè)贊
您可以采用哈希表作為分組索引。
var array = [{ ModuleID: 'one', ModuleValue: 'valueX' }, { ModuleID: 'one', ModuleValue: 'valueV' }, { ModuleID: 'one', ModuleValue: 'valueE' }, { ModuleID: 'one', ModuleValue: 'valueY' }, { ModuleID: 'two', ModuleValue: 'valueZ' }, { ModuleID: 'two', ModuleValue: 'valueB' }, { ModuleID: 'two', ModuleValue: 'valueA' }],
result = array.map(
(c => o => ({ ...o, index: (c[o.ModuleID] ??= 0, c[o.ModuleID]++) }))
({})
);
console.log(result);

TA貢獻(xiàn)1911條經(jīng)驗(yàn) 獲得超7個(gè)贊
只需循環(huán)遍歷數(shù)組并檢查 的值,ModuleID并根據(jù)該值添加一個(gè)index屬性,該屬性的值是兩個(gè)可能的計(jì)數(shù)器之一的值,然后遞增。if/then 邏輯可以做得更緊湊,但我在這里使用的是以防稍后添加也需要檢查的switch其他值。ModuleID
var arr1 = [
{ ModuleID : 'one', ModuleValue : 'valueX'},
{ ModuleID : 'one', ModuleValue : 'valueV'},
{ ModuleID : 'one', ModuleValue : 'valueE'},
{ ModuleID : 'one', ModuleValue : 'valueY'},
{ ModuleID : 'two', ModuleValue : 'valueZ'},
{ ModuleID : 'two', ModuleValue : 'valueB'},
{ ModuleID : 'two', ModuleValue : 'valueA'}
];
let a = 0;
let b = 0;
arr1.forEach(function(obj){
switch (obj.ModuleID) {
case "one":
obj.index = a++;
break;
case "two":
obj.index = b++;
break;
}
});
console.log(arr1);

TA貢獻(xiàn)1784條經(jīng)驗(yàn) 獲得超2個(gè)贊
var arr2 = [];
var index = 0;
var transition = false;
for (var i = 0; i < arr1.length; ++i) {
if (i < arr1.length && arr1[i].ModuleID = arr1[i+1].ModuleID ) {
index = index + 1;
} else {
transition = true;index = index + 1;
};
arr2.push({ModuleID: arr1[i].ModuleID, ModuleValue: arr1[i].ModuleValue, index: index});
if(transition){
index=0;
transition = false;
}
};

TA貢獻(xiàn)1875條經(jīng)驗(yàn) 獲得超5個(gè)贊
那是你想做的嗎?
var arr1 = [
{ModuleID: 'one', ModuleValue: 'valueX'},
{ModuleID: 'one', ModuleValue: 'valueV'},
{ModuleID: 'one', ModuleValue: 'valueE'},
{ModuleID: 'one', ModuleValue: 'valueY'},
{ModuleID: 'two', ModuleValue: 'valueZ'},
{ModuleID: 'two', ModuleValue: 'valueB'},
{ModuleID: 'two', ModuleValue: 'valueA'}
];
function setIndex (item, idx) {
arr1 [idx] .index = idx + 1
}
arr1.forEach (setIndex)
console.log ("code changed")
console.log (arr1)
這是生成的結(jié)果
[
{
"ModuleID": "one",
"ModuleValue": "valueX",
"index": 1
},
{
"ModuleID": "one",
"ModuleValue": "valueV",
"index": 2
},
{
"ModuleID": "one",
"ModuleValue": "valueE",
"index": 3
},
{
"ModuleID": "one",
"ModuleValue": "valueY",
"index": 4
},
{
"ModuleID": "two",
"ModuleValue": "valueZ",
"index": 5
},
{
"ModuleID": "two",
"ModuleValue": "valueB",
"index": 6
},
{
"ModuleID": "two",
"ModuleValue": "valueA",
"index": 7
}
]
添加回答
舉報(bào)