可能重复:
Easiest way to find duplicate values in a JavaScript array
Javascript array sort and unique
我有以下数组
var output = new array(7);
output[0]="Rose";
output[1]="India";
output[2]="Technologies";
output[3]="Rose";
output[4]="Ltd";
output[5]="India";
output[6]="Rose";
如何删除上面数组中的重复元素。是否有任何方法可以执行此操作?
答案 0 :(得分:9)
你可以写一个像这样的函数
function eliminateDuplicates(arr) {
var i,
len=arr.length,
out=[],
obj={};
for (i=0;i<len;i++) {
obj[arr[i]]=0;
}
for (i in obj) {
out.push(i);
}
return out;
}`
选中此here
答案 1 :(得分:3)
可能比你需要的更复杂但是:
function array_unique (inputArr) {
// Removes duplicate values from array
var key = '',
tmp_arr2 = {},
val = '';
var __array_search = function (needle, haystack) {
var fkey = '';
for (fkey in haystack) {
if (haystack.hasOwnProperty(fkey)) {
if ((haystack[fkey] + '') === (needle + '')) {
return fkey;
}
}
}
return false;
};
for (key in inputArr) {
if (inputArr.hasOwnProperty(key)) {
val = inputArr[key];
if (false === __array_search(val, tmp_arr2)) {
tmp_arr2[key] = val;
}
}
}
return tmp_arr2;
}
答案 2 :(得分:1)
首先,您需要使用数组文字(var output = []
)来声明您的数组。其次,您需要循环遍历数组并将所有值存储在第二个数组中。如果第一个数组中的任何值与第二个数组中的值匹配,请将其删除并继续循环。
您的代码如下所示:
var output = [
"Rose",
"India",
"Technologies",
"Rose",
"Ltd",
"India",
"Rose"
]
var doubledOutput = [];
for(var i = 0; i < output.length; i++) {
var valueIsInArray = false;
for(var j = 0; j < doubledOutput.length; j++) {
if(doubledOutput[j] == output[i]) {
valueIsInArray = true;
}
}
if(valueIsInArray) {
output.splice(i--, 1);
} else {
doubledOutput.push(output[i]);
}
}
请注意,上述代码未经测试,可能包含错误。
答案 3 :(得分:1)
您可以使用临时哈希表(使用javascript对象)从阵列中删除重复,以跟踪您已在阵列中看到的图像。这适用于可以唯一地表示为字符串(主要是字符串或数字)的数组值,但不适用于对象。
function removeDups(array) {
var index = {};
// traverse array from end to start
// so removing the current item from the array
// doesn't mess up the traversal
for (var i = array.length - 1; i >= 0; i--) {
if (array[i] in index) {
// remove this item
array.splice(i, 1);
} else {
// add this value to index
index[array[i]] = true;
}
}
}
以下是一个有效的例子:http://jsfiddle.net/jfriend00/sVT7g/
对于相当大的数组,使用对象作为临时索引将比数组的线性搜索快许多倍。