例如,我需要找到arr count
中每个可重复element
的{{1}},它与前一个元素重复。
现在我创建了这个函数,newArr
我的唯一身份filter
加倍,但我还需要捕获这些elements
的每个index
,这些都是重复的......现在我只获得了最后一次重复elements
的{{1}}。
last index
答案 0 :(得分:3)
使用数组初始化obj[newAr]
,然后推送索引。
注意:使用Array.forEach()
代替Array.map()
,因为forEach用于副作用。
var newArr = ["abc", "abc", "abc", "d", "et", "d", "et", "zzz"];
function calc(newArr) {
var obj = {};
newArr.forEach((newAr, index) => {
// init with array if the key is falsy (undefined in this case)
obj[newAr] = obj[newAr] || [];
// push the current index into the array
obj[newAr].push(index);
});
return obj;
};
console.log(calc(newArr));

答案 1 :(得分:0)
尝试以下
var newArr = ["abc", "abc", "abc", "d", "et", "d", "et", "zzz"];
function calc(newArr) {
var obj = {};
newArr.map((newAr, index) => {
obj[newAr] = obj[newAr] || [];
obj[newAr].push(index);
});
return obj;
};
console.log(calc(newArr));

答案 2 :(得分:0)
您可以传播收集的索引或使用空数组进行传播(spread syntax ...
)并获取indices对象的实际元素。
BTW,在块语句或函数体之后,你不需要分号,而不是Array#map
取Array#forEach
,因为你需要迭代这些项,但你不使用返回的数组map
。
function calc(array) {
var indices = {};
array.forEach((v, i) => indices[v] = [...indices[v] || [], i]);
return indices;
}
var newArr = ["abc", "abc", "abc", "d", "et", "d", "et", "zzz"];
console.log(calc(newArr));