繁体   English   中英

如何检查每个数组对象属性是否为空?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM