Make sure the Javascript object contains only false values

I have an object like this:

var obj1 = {foo: false, bar: ''};
var obj2 = {foo: false, bar: '1'};
var obj3 = {foo: true,  bar: ''};
var obj4 = {foo: true,  bar: '1'};

I need a simple function to check these objects if all their values ​​are false or not. In this example, only obj1 should cause a false error, because all their values ​​are false. obj2, obj3 and obj4 have at least one value that is true.

Is there a simple solution for this?

+4
source share
8 answers

As single line:

!Object.keys(obj1).some(function(k) {return obj1[k];});
// Array.some returns true if any callback returns true
// You want true if all return false, aka if none return true
// So just negate Array.some

As a more readable method:

var ok = true, k;
for( k in obj1) if( obj1.hasOwnProperty(k)) {
    if( obj1[k]) {
        ok = false;
        break;
    }
}
+3
source

You can use some function:

[ob1, ob2, ob3, obj4].some(function(obj) { return obj.foo })
+1
source

.some(), , , , - OP.

,

function isFalse(obj) {
  return Object
    .keys(obj)
    .every(function (k) {
      return !obj[k];
    });
}

. jsFiddle https://jsfiddle.net/0se3yh62/

Object.keys , .

+1

: false false, true:

var out = [obj1, obj2, obj3, obj4].map(function (obj) {
  return !Object.keys(obj).every(function (p) {
    return !obj[p];
  })
}); // [false, true, true, true]

DEMO

+1

, , , ?

function objIsFalsy(obj) {
    for(var i in obj) {
        if(obj[i]) return false;
    }
    return true;
}
0

: -

  • .
  • foreach .
  • .
0

:

function isFalsyObj(obj) {
  for(var elt in obj) if (obj[elt]!=false) return false;
  return true;
}
var obj1 = {foo: false, bar: ''};
var obj2 = {foo: false, bar: '1'};
var obj3 = {foo: true,  bar: ''};
var obj4 = {foo: true,  bar: '1'};
console.log(isFalsyObj(obj1));//true
console.log(isFalsyObj(obj2));//false
console.log(isFalsyObj(obj3));//false
console.log(isFalsyObj(obj4));//false
Run codeHide result
0
source

check this

isvalidObj (obj1); // false

isvalidObj (obj2); // true

function isvalidObj(obj){
    for(var i in obj){ 
      if(obj[i]) return true;
    }
    return false;
}
0
source

Source: https://habr.com/ru/post/1624257/


All Articles