一个数组包含多个对象,循环判断每个对象里的元素不为空,若有一个元素为空则终止循环,并提示不能为空

111 阅读1分钟

通过使用 Array.prototype.some() 方法来判断数组中的每个对象是否有空的元素。some() 方法会遍历数组的每个对象,一旦找到符合条件的元素,就会终止循环。

实现思路:

  1. 使用 some() 方法遍历数组中的每个对象。
  2. 对每个对象中的每个属性进行判断,是否存在空值(nullundefined 或空字符串 '' 等)。
  3. 一旦找到空值,立即终止遍历并给出提示。
const data = [
  { input: 'John', select: '1', date: '2023-09-10' },
  { input: 'Doe', select: '2', date: '' },  // 这里 date 是空的
  { input: 'Jane', select: '3', date: '2023-09-12' }
];

// 定义一个函数来检查对象的每个元素是否为空
function validateArray(arr) {
  // 使用 some() 方法来检查
  const hasEmptyField = arr.some((item, index) => {
    // 遍历对象中的每个字段
    for (const key in item) {
      if (item[key] === '' || item[key] === null || item[key] === undefined) {
        console.log(`第 ${index + 1} 个对象的 "${key}" 不能为空`);
        return true;  // 终止遍历并返回 true
      }
    }
    return false;
  });

  if (!hasEmptyField) {
    console.log('所有对象的字段都已填写');
  }
}

// 调用函数进行验证
validateArray(data);

关键点:

  1. some() 方法:一旦找到符合条件的元素(即有空的字段),遍历就会终止,并返回 true
  2. for...in 循环:用来遍历对象中的每个属性,并判断是否为空。
  3. 判断条件:检查属性值是否为 ''(空字符串)、nullundefined

运行结果:

2 个对象的 "date" 不能为空