![](/img/trans.png)
[英]How to Check for an empty object property in an array of objects in Javascript
[英]How to check any every array object property empty or not?
function 的目的是在所有answers
都为空时得到false 。 目前,当只有一个answers
空并且其余的里面有数据时,一些如何得到 **false 。
检查所有answers
是否为空的最佳方法是什么。 有些有数据,有些没有,这并不重要。 我只是想看看都是空的还是不空的。
const questions = [{ "answers": [{ "value": "Browns", "selected": false, }, { "value": "Oranges", "selected": false, }, { "value": "Purples", "selected": false, } ], "info": "", "type": "DESELECT", "lastUpdated": "2021-11-01T22:50:28.359" }, { "answers": [], "info": "", "type": "DESELECT", "lastUpdated": "2021-11-01T22:50:35.392" }, { "answers": [{ "value": "AnimalPrints", "selected": false, }, { "value": "BigLogos", "selected": true, }, { "value": "Floral", "selected": false, } ], "info": "", "type": "DESELECT", "lastUpdated": "2021-11-01T22:50:43.883" } ]; console.clear(); console.log("------------ES6------------"); const es6Result = questions.every((item) => !_.isEmpty(item.answers)); console.log(es6Result); const lodashResult = _.every(questions, !_.isEmpty('answers')); console.log("------------Lodash------------"); console.log(lodashResult);
<script src="https://cdn.jsdelivr.net/npm/lodash@4.17.21/lodash.min.js"></script>
你可以使用.some()
你会得到true
,如果至少1个answers
不为空,你会得到false
,如果所有answers
都为空
const es6Result = questions.some((item) => item.answers.length);
我认为您描述的逻辑需要:
const lodashResult = !_.every(questions, _.isEmpty('answers'));
或者
const es6Result = !questions.every((item) => _.isEmpty(item.answers));
const questions = [{ "answers": [{ "value": "Browns", "selected": false, }, { "value": "Oranges", "selected": false, }, { "value": "Purples", "selected": false, } ], "info": "", "type": "DESELECT", "lastUpdated": "2021-11-01T22:50:28.359" }, { "answers": [], "info": "", "type": "DESELECT", "lastUpdated": "2021-11-01T22:50:35.392" }, { "answers": [{ "value": "AnimalPrints", "selected": false, }, { "value": "BigLogos", "selected": true, }, { "value": "Floral", "selected": false, } ], "info": "", "type": "DESELECT", "lastUpdated": "2021-11-01T22:50:43.883" } ]; console.clear(); console.log("------------ES6------------"); const es6Result = questions.map((item) => _.isEmpty(item.answers)).indexOf(true) > -1; console.log(es6Result);
<script src="https://cdn.jsdelivr.net/npm/lodash@4.17.21/lodash.min.js"></script>
这里真的不需要 lodash。 你应该能够通过使用Array.prototype.every来完成你想要的
questions.every((item) => item.answers.length > 0)
只要所有“答案”数组都包含一个或多个项目,这将始终返回 true,否则返回 false。 正如Georgy所说,当您想要检查至少一项时,您可以使用Array.prototype.some 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.