我正在为以下
寻找js / jquery解决方案我想检查一个数组是否有重复项,让我们说:
var destRes = ['BH17 7EP', 'TA2 6LL', 'OX15 4LJ', 'OX15 4LJ', 'OX15 4LJ', 'BH17 7EP', 'TA2 6LL']
并返回一个包含该值的第一个索引的数组; 例如,对于上述ex,这应该是返回:
var newArr = ['0', '1', '2', '2', '2', '0', '1' ]
BH17 7EP
位于索引0
和5
,因此在新数组中,0
和5
索引应为0
, BH17 7EP
TA2 6LL
位于索引1
和6
,因此在新数组中,1
和6
索引应为1
, TA2 6LL
答案 0 :(得分:6)
你可以迭代数组并使用indexOf()
它总是返回数组中值的第一个索引。像这样的东西:
var destRes = ['BH17 7EP', 'TA2 6LL', 'OX15 4LJ', 'OX15 4LJ', 'OX15 4LJ', 'BH17 7EP', 'TA2 6LL'];
var indexes = destRes.map(x => destRes.indexOf(x));
console.log(indexes);
答案 1 :(得分:0)
您可以使用哈希表映射索引,而不使用Array#indexOf
的其他循环。
var array = ['BH17 7EP', 'TA2 6LL', 'OX15 4LJ', 'OX15 4LJ', 'OX15 4LJ', 'BH17 7EP', 'TA2 6LL'],
temp = Object.create(null),
result = array.map(function (a, i) {
return a in temp ? temp[a] : temp[a] = i;
});
console.log(result);
console.log(temp);
.as-console-wrapper { max-height: 100% !important; top: 0; }
答案 2 :(得分:0)
试试这个
var destRes = ['BH17 7EP', 'TA2 6LL', 'OX15 4LJ', 'OX15 4LJ', 'OX15 4LJ', 'BH17 7EP', 'TA2 6LL'];
var newArr = [];
for (var i = (destRes.length - 1); i >= 0; i--) {
var temp = 0;
for (var j = 0; j < i; j++) {
if (destRes[j] == destRes[i]) {
temp = 1;
break;
}
}
if (temp == 1) {
newArr[i] = j;
} else {
newArr[i] = i;
}
}
console.log(newArr);
&#13;