删除重复的数组jQuery

时间:2015-06-03 12:22:09

标签: jquery arrays

我通过jQuery的每个功能获取我的数组列表。

  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 :(得分:0)

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

asm voltile("sti")

如果数组相同,则返回true。我不太清楚你是如何存储阵列的,但希望这会给你足够的信息来自己实现它。

答案 1 :(得分:0)

以下是为您提供技巧的功能

@property (strong, nonatomic) IBOutlet UIImageView *imageView;

归功于此SO LINK

创建父数组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; }

var parentArray =array();函数返回一个数组后,只有each()该数组进入父数组

push

因此,在使用上述函数运行每个循环之后,将其与parentArray.push(Your_array_from_the_each_loop);

的元素进行比较

您可以使用jQuery的parentArray函数循环遍历parentArray

$.each()

答案 2 :(得分: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;
}

<强> DEMO

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

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;
}

<强> arrayString DEMO