去重数组 jQuery

4
我通过jQuery的each函数获取我的数组列表。
  var spnTxt = '';
  var arr = $('#id').find('span').each(function(utval) {
       spnTxt = $(this).text();
  });

这让我感到

["pet", "dog", "london", "class"]
["pet", "cat", "newyork", "weight"]
["tech", "phone", "spain", "hello2"]
["tech", "phone", "spain", "hello"]
["tech", "phone", "spain", "hello"]

在我上面的例子中,我应该得到...
["pet", "dog", "london", "class"]
["pet", "cat", "newyork", "weight"]
["tech", "phone", "spain", "hello2"]
["tech", "phone", "spain", "hello"]

这是一个独特的问题。我的下面代码不起作用。我不确定它是否正确。

var dup = {};
var arr = $('#id').find('span').each(function(utval) {
    spnTxt = $(this).text();
    if (dup[spnTxt])
        $(this).remove();
    else
        dup[spnTxt] = true;

});

基本上我想删除重复的数组,如果我的数组中的字符串完全相同。如何实现此目标?

3个回答

0

如果要比较数组以查看它们的整个集合是否相同,可以使用Jquery is

$(array4).is(array5)

如果这些数组相同,它将返回 true。我不太清楚你是如何存储这些数组的,但希望这能为你提供足够的信息来自己实现它。


我没有两个单独的数组。 - user2377457
@Loura 你有什么呢? - George

0

这是一个能为您解决问题的函数

function arraysEqual(arr1, arr2) {
    if(arr1.length !== arr2.length)
        return false;
    for(var i = arr1.length; i--;) {
        if(arr1[i] !== arr2[i])
            return false;
    }

    return true;
}

感谢这个SO LINK

创建一个父数组var parentArray =array();

each()函数返回一个数组后,只需将该数组push到父数组中即可。

parentArray.push(Your_array_from_the_each_loop);

所以在使用上述函数运行每个循环后,请将其与parentArray的元素进行比较。

您可以使用jQuery的$.each()函数遍历parentArray

$.each(parentArray,function(key,value){ //NOTE: $.each() is different that $('elem').each();
//do the comparison
});

0

尝试

var newArr = [];

for (var i = 0; i < arr.length; i++) {
    if (!isArraySame(newArr, arr[i])) {
        newArr.push(arr[i]);
    }
}

console.log(newArr)

function isArraySame(ar, check) {

    var isIn = false;
    for (var j = 0; j < ar.length; j++) {
        var sliceArr = ar[j];
        if (ar[j].length == check.length) {
            var count = 0;
            for (var i = 0; i < check.length; i++) {
                if (check[i] == ar[j][i]) {
                    count++;
                }
            }
            if (count == check.length) {
                isIn = true;
                break;
            }
        }
    }
    return isIn;
}

演示

或者使用此方法检查相同的数组

function isArraySame(ar, check) {
    var strArr = check.join();
    var isIn = false;
    for (var j = 0; j < ar.length; j++) {
        if (ar[j].join() == strArr){
            isIn = true;
            break;
        }
    }
    return isIn;
}

数组字符串演示


你有检查过演示链接吗?这是你需要的东西还是其他什么? - Balachandran
是的,这对我有用...感谢您的时间。 - user2377457

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接