Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Check if array contains object-only-element in Javascript

I want to check if an array contains only objects. So I created this function:

function arrayContainsObjOnly(arr){
  return arr.join("").replace(/\[object Object\]/g, "") === "";
}

Here is how you would use it:

// return true
arrayContainsObjOnly([
  {"name" : "juan", "age" : 28},
  {"name" : "pedro", "age" : 25}
]);

// return false
arrayContainsObjOnly([
  {"name" : "juan", "age" : 28},
  "name=pedro;age=25"
]);

Is there any cleaner way to do this? Is using the literal "[object Object]" for checking is safe? I also prefer a non-jQuery solution.

like image 619
nameless Avatar asked Mar 13 '26 20:03

nameless


1 Answers

Conceptually simpler and cleaner, but no less code:

function arrContainsObjOnly(arr) {
  return arr.every(function(el) {
    return Object.prototype.toString.call(el) === '[object Object]';
  });
}

Update

On second thought, this variant would be better, as it would return false on encountering the first non-object:

function arrContainsObjOnly(arr) {
  return !arr.some(function(el) {
    return Object.prototype.toString.call(el) !== '[object Object]';
  });
}
like image 192
Scott Sauyet Avatar answered Mar 16 '26 10:03

Scott Sauyet