检查对象数组中是否存在空值

时间:2016-06-24 17:41:23

标签: javascript arrays object iteration underscore.js

我有这个对象数组。

[Object, Object, Object]
0:Object
 name: "Rick"
 Contact: "Yes"
 Date:'null'
 Location:'null'
1:Object
 name:"Anjie"
 Contact:"No"
 Date:'13/6/2016'
 Location:'LA'
2:Object
 name:"dillan"
 Contact:"Maybe"
 Date:'17/6/2016'
 Location:'NY'

如您所见,对象[0]的日期和位置都有空值。我想检查整个对象数组中是否存在空值。 如果'日期'存在空值。和'位置',我应该能够显示' Null present'在控制台。如果不存在空值,则应显示“数据权限”。在控制台。

有人可以让我知道如何实现这一目标。

4 个答案:

答案 0 :(得分:2)

使用 Object.keys() Array#some 方法

var data = [{
  name: "Rick",
  Contact: "Yes",
  Date: null,
  Location: null
}, {
  name: "Anjie",
  Contact: "No",
  Date: '13/6/2016',
  Location: 'LA'
}, {
  name: "dillan",
  Contact: "Maybe",
  Date: '17/6/2016',
  Location: 'NY'
}];


// iterate over array elements
data.forEach(function(v, i) {
  if (
    // get all properties and check any of it's value is null
    Object.keys(v).some(function(k) {
      return v[k] == null;
    })
  )
    console.log('null value present', i);
  else
    console.log('data right', i);
});

答案 1 :(得分:1)

var wasNull = false;
for(var i in objectsArray) {
  if(objectsArray[i].Date == null || objectsArray[i].Location == null) wasNull = true;
}
if(wasNull) console.log('Was null');
else console.log('Data right');

答案 2 :(得分:1)

使用some()并检查是否有空。



var arr = [
   { a : "a", b : "b", c : "c" },
   { a : "a", b : "b", c : "c" },
   { a : "a", b : "b", c : null }
];

function hasNull(element, index, array) {
  return element.a===null || element.b===null || element.c===null;
}
console.log( arr.some(hasNull) );




如果您不想硬编码if,则需要添加另一个循环并循环键。



var arr = [
   { a : "a1", b : "b1", c : "c1" },
   { a : "a2", b : "b2", c : "c2" },
   { a : "a3", b : "b3", c : null }
];

function hasNull(element, index, array) {
  return Object.keys(element).some( 
    function (key) { 
      return element[key]===null; 
    }
  ); 
}
console.log( arr.some(hasNull) );




带有reg exp的

或JSON(



var arr = [
   { a : "a1", b : "b1", c : "c1" },
   { a : "a2", b : "b2", c : "c2" },
   { a : "a3", b : "b3", c : null }
];

var hasMatch = JSON.stringify(arr).match(/:null[\},]/)!==null;
console.log(hasMatch);




答案 3 :(得分:1)

使用下划线的解决方案:

var nullPresent = _.some(data, item => _.some(_.pick(item, 'Date', 'Location'), _.isNull));