我想知道这两种方法之间,哪一种会更快,为什么?
使用 Object.values 和lodash
isOneObjectPropertyNonUndefined(object) {
let isObjectEmpty = true;
if (!lodash.isEmpty(object)) {
const objectValues = Object.values(object);
for (let index in objectValues) {
if (objectValues[index] !== undefined) {
isObjectEmpty = false;
break;
}
}
}
return isObjectEmpty;
}
使用 JSON.stringify
isOneObjectPropertyNonUndefined(object) {
return JSON.stringify(object) === '{}';
}
在JSON.stringify之后,可能是一些C / C ++代码。如果是正确的事实,可以假设它更快吗?
EDIT :似乎JSON.stringify使用jsperf更快。 https://jsperf.com/test-one-object-field-non-undefined/1 即使仅通过一个非常简单的输入进行了测试。
答案 0 :(得分:3)
两者似乎都比必要的复杂:
isOneObjectPropertyNonUndefined(object) {
return Object.values(object).some(v => v !== undefined));
}
如果对象具有至少一个其值不是true
的属性,则返回undefined
,如果该对象没有属性或者它们都具有值false
,则返回undefined
这用于“自有”属性(就像JSON.stringify
一样。)