按组在JavaScript数组中创建值序列
我找到了关于如何映射数组以为数组中的每个对象创建ID的答案,但我想知道您如何调整此代码以为另一个值的每组创建ID序列:按组在JavaScript数组中创建值序列,javascript,foreach,Javascript,Foreach,我找到了关于如何映射数组以为数组中的每个对象创建ID的答案,但我想知道您如何调整此代码以为另一个值的每组创建ID序列: let dataset = [ {value: "a"}, {value: "a"}, {value: "a"}, {value: "b"}, {value: "b"}, {value: "c"}, ] 变成: [ {value: "
let dataset = [
{value: "a"},
{value: "a"},
{value: "a"},
{value: "b"},
{value: "b"},
{value: "c"},
]
变成:
[
{value: "a", groupid: 1},
{value: "a", groupid: 2},
{value: "a", groupid: 3},
{value: "b", groupid: 1},
{value: "b", groupid: 2},
{value: "c", groupid: 1},
]
感谢您的帮助 以下是使用传统for循环的解决方案
var数据=[
{value:“a”},
{value:“a”},
{value:“a”},
{value:“b”},
{value:“b”},
{value:“c”}
]
var-id=1;
var i;
对于(i=0;iforeach()方法对每个数组元素执行一次提供的函数,但返回未定义的(请参阅)。您可以使用map()方法(请参阅)
一个有效的例子是:
let数据集=[{
价值:“a”
},
{
价值:“a”
},
{
价值:“a”
},
{
值:“b”
},
{
值:“b”
},
{
值:“c”
},
];
常量计数器映射=新映射();
让res=dataset.map((val)=>{
const previousGroupId=counterMap.get(val.value);
让groupId;
if(previousGroupId==未定义){
groupId=1;
}否则{
groupId=previousGroupId+1;
}
counterMap.set(val.value,groupId);
返回{
值:val.value,
groupId:groupId
};
});
console.log(res)