克隆JavaScript对象的最有效方法是什么?我已经看到obj = eval(uneval(o));被使用,但这是非标准的,只有Firefox支持.
我做过类似的事情,obj = JSON.parse(JSON.stringify(o));但质疑效率.
我也看到了具有各种缺陷的递归复制功能.
我很惊讶没有规范的解决方案.
我希望数组的位置也相同,值也相同.
var array1 = [4,8,9,10];
var array2 = [4,8,9,10];
Run Code Online (Sandbox Code Playgroud)
我试过这样的
var array3 = array1 === array2 // returns false
Run Code Online (Sandbox Code Playgroud) 所以,我正在使用Jquery,并且有两个数组都有多个值,我想检查第一个数组中的所有值是否都存在于第二个数组中.
例如,例1 ......
数组A包含以下值
34,78,89
数组B包含以下值
78,67,34,99,56,89
这将返回真实
......例2:
数组A包含以下值
34,78,89
数组B包含以下值
78,67,99,56,89
这将返回false
......例3:
数组A包含以下值
34,78,89
数组B包含以下值
78,89
这将返回false
到目前为止,我试图解决这个问题:
任何人都可以投入任何光线都会很棒.
以下是在Firebug中完成的:
>>> [1, 2] == [1, 2]
false
>>> ({a : 1}) == ({a : 1})
false
Run Code Online (Sandbox Code Playgroud)
我认为Javscript有一些规则说,如果一个Object或Array对相同的元素具有相同的引用,那么它们是相等的吗?
但即使我说
>>> foo = {a : 1}
Object { a=1}
>>> [foo] == [foo]
false
>>> ({a: foo}) == ({a: foo})
false
Run Code Online (Sandbox Code Playgroud)
有没有办法使它能够进行元素比较并返回true?
假设我有2个阵列
firstArray = [1, 2, 3, 4, 5];
secondArray = [5, 4, 3, 2, 1];
Run Code Online (Sandbox Code Playgroud)
我想知道它们是否包含相同的元素,而顺序并不重要.我知道我可以编写一个函数来对它们进行排序,然后循环遍历它们进行检查,但是有没有预先构建的函数呢?(不仅是Vanilla JS,其他javascript库也没关系)