我试图创建一个接收数组并返回没有唯一元素的新数组的函数,例如:
nonUniqueElements([1, 2, 3, 1, 3])
// Result: [1, 3, 1, 3]
我尝试使用两个for
循环但没有成功。
答案 0 :(得分:0)
您可以使用indexOf
和lastIndexOf
过滤不唯一的元素。如果这两个indexOf
和lastIndexOf
中的一个返回的索引与当前元素的索引不同,那么它不是唯一的。 请注意 indexOf
和lastIndexOf
无法返回-1
,因为至少有一个元素与数组中的当前元素相等。
var arr = [1, 4, 2, 2, 1, 5, 2, 4, 3];
var result = arr.filter(function(e, i){
return arr.indexOf(e) != arr.lastIndexOf(e);
});
console.log(result);

答案 1 :(得分:0)
如果您需要使用2个循环,那么类似的东西?
var test = [1, 2, 'A', 3, 'C', 1, 'A', 3, 'D', 'A'];
var result = count_occurrences_limit(test, 1);
function count_occurrences_limit(arr, limit) {
var objs_count = {};
for (var i = 0, j = arr.length; i < j; i++) {
objs_count [arr[i]] = (objs_count [arr[i]] || 0) + 1;
}
var final_reduced = [];
for (vari in objs_count) {
if (objs_count[vari] > limit) {
final_reduced[vari] = objs_count[vari];
}
}
return final_reduced;
}
/*[1: 2, 3: 2, A: 3]*/