2015-08-27 4 views
-1

У меня есть требование, чтобы найти, является ли переменная массивом объектов или нет, ниже приведен пример данных:Как определить, является ли переменная массивом объектов или нет?

var myColumnDefs = [ 
         {key:"label", sortable:true, resizeable:true}, 
         {key:"notes", sortable:true,resizeable:true}]; 

Если я

jQuery.type (myColumnDefs), то он будет говорить, что это массив

но как я могу найти, является ли это массив объектов, или нет?

Если я перебирать каждый элемент массива и проверить объект с jQuery.isPlainObject() то и он не будет работать, потому что он будет проверять только для простых объектов, таких как jQuery.isPlainObject ({}).

+0

массив объектов ... в отличие от массива чисел? или ... – sahbeewah

+1

Используйте 'typeof' like' if ((typeof myColumnDefs === "object") '. Или' myColumnDefs instanceof Object', который вернет true или false – Hearner

+0

в JavaScript, все массивы - это объекты. Что вы имеете в виду? когда вы говорите «массив объектов»? – lispHK01

ответ

5

Массивы в javascript не печатаются, поэтому вам нужно будет проверить каждый, что каждый элемент массива является объектом.

Например:

var isObjectArray = true; 
myColumnDefs.forEach(function(elem) { 
    if (typeof elem === "object") 
    isObjectArray = false; 
}); 

Вот многоразовый функция:

function isObjectArray(arr) { 
    for (var i = 0; i < arr.length; i++) 
     if (typeof arr[i] !== "object") 
     return false; 
    return true; 
} 
+1

может также ломаться условие тоже – Popnoodles

+0

Согласен, я изменил это в функции, которую я добавил, - я привык к ленивым языкам, таким как Haskell. – Sam

+0

@Sam, ваше решение выглядит хорошо. Я буду использовать это спасибо – ChiranjeeviIT