查找数组中是否有任何项目符合条件

时间:2018-10-03 10:29:24

标签: javascript arrays reactjs map-function

我是Java的新手。现在,这里有一个包含多个对象的数组。因此,我想对其进行迭代,如果任何对象符合条件,那么我想返回一个值并停止该循环。

我的obj数组就像

var obj =  [ { type: "", numberOfQuestions:"",  technology:"" }, { type: "1", numberOfQuestions:"4",  technology:"abcd" }, { type: "", numberOfQuestions:"6",  technology:"ass" } ]

我的条件是,

     validateData(data) {
            data.High.map((object) => {
              if((object.type === "") || (object.numberOfQuestions === "") || (object.technology === "")) {
                    return true;
              } else {
                  return false;
              } 
            });
        } 

因此,我想要的是具有某些键的任何对象的任何键都具有空值,即""然后我想返回一个真值,以便可以执行其他操作。 我该怎么办?

任何人都可以帮助我。

6 个答案:

答案 0 :(得分:2)

您可以为此使用过滤器功能,它会在条件

下返回数组
 var container =  [ { type: "", numberOfQuestions:"",  technology:"" }, { type: "1", numberOfQuestions:"4",  technology:"abcd" }, { type: "", numberOfQuestions:"6",  technology:"ass" } ]

    container.filter((a)=>{ return a['type'] == "" ? a : a['numberOfQuestions'] == "" ? a : a['technology'] == "" ? a : '' }).length > 0 ? true : false;

答案 1 :(得分:1)

您可以使用Array.prototype.some

var array = [...];

function validateData (array) {
  return array.some(item => item.type === '' || item.numberOfQuestions === '' || item.technology === '');
}

validateData(array);

这是ES6解决方案(带有箭头功能)。

ES5解决方案:

function validateData (array) {
  return array.some(function(item) { 
    return item.type === '' || item.numberOfQuestions === '' || item.technology === '';
  });
}

答案 2 :(得分:1)

您可以使用过滤器

var obj =  [ { type: "", numberOfQuestions:"",  technology:"" }, { type: "1", numberOfQuestions:"4",  technology:"abcd" }, { type: "", numberOfQuestions:"6",  technology:"ass" } ]
obj.filter((a)=>{ return a['type'] == "" ? a : a['numberOfQuestions'] == "" ? a : a['technology'] == "" ? a : '' }).length > 0 ? true : false;

答案 3 :(得分:0)

使用数组reduce

    obj =  [ { type: "", numberOfQuestions:"",  technology:"" }, { type: "1", numberOfQuestions:"4",  technology:"abcd" }, { type: "", numberOfQuestions:"6",  technology:"ass" } ];
    
    obj = obj.find(function(item){ if (!(item.type === '' || item.numberOfQuestions === '' || item.technology === '')){ return item; } });
    
    console.log('array : ', obj);

答案 4 :(得分:0)

首先,请不要在对象中使用=,请使用:。如果要动态检查密钥,请使用此代码

    const validateData = (data) => {
          data.map((object) => {
        Object.keys(object).map((innerObj) => {
        if(object[innerObj] === "") {
                  return true;
            } else {
                return false;
            } 

        })

          });
        } 

        var obj =  [{ type: "", numberOfQuestions:"",  technology:"" }, 
{ type: "1", numberOfQuestions:"4",  technology:"abcd" }, 
{ type: "", numberOfQuestions:"6",  technology:"ass" }];

        validateData(obj);

答案 5 :(得分:0)

无论键名如何(使用es6语法),此方法都可以使用。

var data =  [ { type: "", numberOfQuestions:"",  technology:"" }, { type: "1", numberOfQuestions:"4",  technology:"abcd" }, { type: "", numberOfQuestions:"6",  technology:"ass" } ]

const checkNull = (data) => data.some(item => Object.keys(item).some(key => item[key] == ''));

console.log(checkNull(data));