首页 > 解决方案 > 如何检查每个数组对象属性是否为空?

问题描述

函数的目的是在全部为空时获取false 。answers目前,当只有一个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>

标签: javascriptecmascript-6lodashis-empty

解决方案


您可以使用.some()true如果至少 1answers不为空,您将得到false,如果全部answers为空,您将得到

const es6Result = questions.some((item) => item.answers.length);

推荐阅读