我有一个对象:
obj = {name:null, lastName:null, scores:[]}
我需要迭代并检查除scores字段以外的所有字段是否为null。我需要跳过它。
我正在使用
Object.values(obj).every(x=> x===null)
在添加分数之前,但是我不确定现在如何跳过该字段。因为不管scores数组是否为空,如果其他所有字段都为null,则需要返回true。
任何建议都值得赞赏
答案 0 :(得分:5)
您可以filter
不想检查的键:
Object.keys(obj)
.filter(k => k !== "scores")
.every(k => obj[k] === null);
可以将每个条件中的两个条件组合在一起(对于您不想检查的键只返回true),但是我选择将逻辑分开。 < / p>
答案 1 :(得分:4)
如果您可以使用ES7(如果无法使用则可以使用垫片),则可以使用它来避免对对象进行两次迭代:
Object.entries(obj).every(([k, v]) => v === null || k === 'scores');
Object.entries
可在除MSIE之外的所有当前主流浏览器中使用。
Object.entries
的另一个优点是,由于回调函数同时传递了键和值,因此无需在回调函数内访问obj
,这反过来又强制使用内联函数在obj
上形成闭包。借助.entries()
,完全有可能使回调成为一个单独的函数,如果代码要长得多,或者在多个地方都需要回调逻辑,则这一点尤其重要。