如何找到一个不等于它加载的数组..?

时间:2013-07-12 07:38:22

标签: jquery arrays

在我的页面中,我没有复选框,在加载页面时,我正在收集一些值并推送到名为sendStatus1的数组,我再次将值赋给其他名为submitView的变量,

我分配的原因,我想检查,如果两个数组相同或不同,如果两者都不同,我会去发布否则我不会。

但作为动态变量,每次用户点击复选框时,两个阵列都在更新,我看不到任何不同。

如何查找数组与加载状态时有所不同。?

我的尝试:

submitView = sendStatus1; //onload i do.

    var submitStatus = function(){

            var submitButton = $("span.submit").find("button[type='button']");

            console.log(submitView, sendStatus1); //but both are same always..


        }

如何在点击复选框时存储sendStatus1不可更新? 如何提出这个问题..有人帮我吗?

2 个答案:

答案 0 :(得分:1)

由于数组存储在Javascript中的方式,如果您将数据分配给另一个:

submitView = sendStatus1;

将一个引用分配给另一个,然后两个引用都指向同一个数组。

你需要clone你可以这样做的数组:

submitView = sendStatus1.slice(0);

这会创建一个可用于比较的数组的全新副本。

答案 1 :(得分:0)

  

...推送到一个名为sendStatus1的数组,我再次将该值赋给其他名为submitView的变量,

当您将某些内容推送到数组中时,您可以修改该数组。它不会创建带有新值的 new 数组。例如:

var a = [];        // Create an array
var b = a;         // Now both `a` and `b` point to the **same** array
a.push("hi");      // Modify the one array they both point to
console.log(b[0]); // "hi"

我们无法帮助您将上述原则应用于您自己的代码,因为您没有发布足够的内容,但这可能就是您看到“两个阵列”相同的原因。它不是两个阵列,而是一个阵列。

如果你真的想要创建第二个数组,它是第一个数组的副本,然后添加到它,可以做到这一点,但通常会有更好的答案。

var a = [];                // Create an array
a.push("First entry");     // Put something in it
var b = [].concat(a);      // Create a *new* array with copies of `a`'s entries
b.push("Second entry");    // Put something on the new array
console.log(a.join(", ")); // "First entry"
console.log(b.join(", ")); // "First entry, Second entry"

(从技术上讲,上面的效率有点低,因为有一个临时数组被创建并丢弃。你也可以像这样复制一个数组:

var b = [];
b.push.apply(b, a);

......但它更复杂,我想保持上述简单。)