javascript - 比较两个 object.attribute 还是比较两个对象更快?

标签 javascript

我有一个对象日期如下

let date = {
   string: '2018-10-09'
}

I also have two hour object :

let hour1 = {
   string: '09:00',
   date: date
}

let hour2 = {
   string: '10:00',
   date: date
}

我想检查 hour1.date 是否等于 hour2.date 或者 hour1.date.string 是否等于 hour2.date.string。两者之间哪个最快,为什么?:

if (hour1.date === hour2.date) //do things
if (hour1.date.string === hour2.date.string) //do things

编辑 - 部分答案

好的,我做了如下测试:

let date = {
   string: '2018-10-09'
}

let hour1 = {
   string: '09:00',
   date: date
}

let hour2 = {
   string: '10:00',
   date: date
}

var iterations = 100000000


console.time('Object comparison');
for (var i = 0; i < iterations; i++ ){
    compareObjects(hour1.date, hour2.date);
};
console.timeEnd('Object comparison');


console.time('Property comparison');
for (var i = 0; i < iterations; i++) {
    compareObjectsProperties(hour1.date.string, hour2.date.string);
}
console.timeEnd('Property comparison');


function compareObjects(o1, o2) {
    if (o1 === o2) return true;
}

function compareObjectsProperties(prop1, prop2) {
    if (prop1 === prop2) return true;
}

输出:

Object comparison: 284.808837890625ms
Property comparison: 281.16796875ms

最佳答案

备选方案根本不相等:

var a = {
   str: 'aaa'
}, b = {
   str: 'aaa'
};

// true, strings are not equal
a.str === b.str; 
/*
  false, both objects are independent and so are different; 
  nested properties does not matter
*/
a === b;

关于javascript - 比较两个 object.attribute 还是比较两个对象更快?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52241953/

相关文章:

javascript - React 和 localStorage 获取 NaN

javascript - 将对象转换为字符串数组?

检查元音的 JavaScript 函数

javascript - 操作外部js文件中的Vue数据

javascript - 使用 Jquery 获取 Select2 自定义标签的值

javascript - 在 Vuejs 中为 v-for 创建的元素添加方法

javascript - 如果文本框不包含数据则隐藏文本框

php - jquery 比较两个字段值

javascript - 使用 Knockout 将数据从数据库加载到 DropDownList

javascript - 在 PyCrypto AES MODE_CTR 中包含 nonce 和 block 计数