在JavaScript中比较对象的最佳方法是什么?
例:
var user1 = {name : "nerd", org: "dev"};
var user2 = {name : "nerd", org: "dev"};
var eq = user1 == user2;
alert(eq); // gives false
Run Code Online (Sandbox Code Playgroud)
我知道如果它们引用完全相同的对象,则两个对象是相等的,但有没有办法检查它们是否具有相同的属性值?
以下方式对我有用,但这是唯一的可能性吗?
var eq = Object.toJSON(user1) == Object.toJSON(user2);
alert(eq); // gives true
Run Code Online (Sandbox Code Playgroud) 严格的相等运算符将告诉您两个对象类型是否相等.但是,有没有办法判断两个对象是否相等,就像 Java中的哈希码值一样?
Stack Overflow问题JavaScript中是否有任何类型的hashCode函数?类似于这个问题,但需要更多的学术答案.上面的场景说明了为什么需要有一个,我想知道是否有任何等效的解决方案.
我一直在阅读一堆react代码,我看到这样的东西,我不明白:
handleChange = field => e => {
e.preventDefault();
/// Do something here
}
Run Code Online (Sandbox Code Playgroud) var a = [1, 2, 3];
var b = [3, 2, 1];
var c = new Array(1, 2, 3);
alert(a == b + "|" + b == c);
Run Code Online (Sandbox Code Playgroud)
如何检查这些数组是否相等并获得一个方法,true如果它们相等则返回?
jQuery是否提供任何方法?
我使用的jQuery.click处理上拉斐尔图形的鼠标点击事件,同时,我需要处理鼠标drag事件,鼠标拖动由mousedown,mouseup并mousemove在拉斐尔.
很难区分click,drag因为click还包含mousedown&mouseup,如何在Javascript中区分鼠标"点击"和鼠标"拖动"?
我想检查两个数组是否相同(不是内容明确,但按照确切的顺序).
例如:
array1 = [1,2,3,4,5]
array2 = [1,2,3,4,5]
array3 = [3,5,1,2,4]
Run Code Online (Sandbox Code Playgroud)
阵列1和2相同但3不相同.
有没有一种很好的方法在JavaScript中执行此操作?
我想比较JavaScript代码中的2个对象数组.这些对象有8个属性,但是每个对象都没有每个对象的值,并且数组永远不会超过8个项目,所以也许是通过遍历每个对象然后查看值的强力方法. 8个属性是我想做的最简单的方法,但在实现之前,我想看看是否有人有更优雅的解决方案.有什么想法吗?
我希望数组的位置也相同,值也相同.
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) 我开始时:
"1:2".split(':') == ["1","2"];
// false
Run Code Online (Sandbox Code Playgroud)
然后尝试:
[1,2] == [1,2];
// false
Run Code Online (Sandbox Code Playgroud)
最终:
[] == [];
// false
Run Code Online (Sandbox Code Playgroud)
我发现了:
"1:2".split(':').toString() == [1,2].toString();
// true
Run Code Online (Sandbox Code Playgroud)
所以我已经解决了我的初始问题(种类),但为什么数组不能相互匹配?
我有javascript对象(数组)深拷贝的问题.我读了许多处理它的好方法.我也知道jQuery有这个问题的$ .extend API.但我的问题是:我可以只使用JSON stringify和parse方法来解决这个问题吗?
这是我的代码:
function deepCopy(oldValue) {
var newValue
strValue = JSON.stringify(oldValue)
return newValue = JSON.parse(strValue)
}
var a = {
b: 'b',
c: [1,2,4],
d: null
}
copy = deepCopy(a)
console.log(a === copy) // false
console.log(a.c === copy.c) // false
Run Code Online (Sandbox Code Playgroud)
PS:我知道如果没有所有对象都是可序列化的,但我知道的唯一情况是当对象包含一个属性是函数时.还有其他情况吗?
javascript ×10
arrays ×3
comparison ×3
object ×2
deep-copy ×1
dom-events ×1
ecmascript-6 ×1
equals ×1
hashcode ×1
jquery ×1
json ×1