在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) 我有一个类似的数组
vendors = [
{
Name: 'Magenic',
ID: 'ABC'
},
{
Name: 'Microsoft',
ID: 'DEF'
} //and so on goes array...
];
Run Code Online (Sandbox Code Playgroud)
如何检查此数组以查看Magenic是否存在?我不想循环,除非我必须.我正在处理可能有几千条记录.
更新
由于这是一个受欢迎的帖子,我想我会分享一些新发现的东西.似乎@CAFxX已经分享了这个!我应该经常阅读这些内容.我遇到了https://benfrain.com/understanding-native-javascript-array-methods/.
vendors.filter(function(vendor){ return vendor.Name === "Magenic" });
Run Code Online (Sandbox Code Playgroud)
使用ECMAScript 2015,使用新的箭头功能更简单:
vendors.filter(vendor => (vendor.Name === "Magenic"));
Run Code Online (Sandbox Code Playgroud)