Как посчитать объекты в javascript? - PullRequest
0 голосов
/ 01 июня 2019

У меня есть функция, которая принимает массив многих типов данных.

function count(totalObjs) {
   var count=0;
    for(var i=0; i<=arr.length; i++) {

      count ++;
   }

   return count;

    }

Ответы [ 3 ]

1 голос
/ 01 июня 2019

Чтобы считать только объекты в массиве, вы не можете сделать это:

typeof x == "object"

, поскольку это возвращает true для объекта,массив, или null.

Лучше проверить toString - он вернет [object Object] для объектов.

const arr = [1,{},[],null,null,'foo',3,4,5,{},{},{},'foo'];

const count = arrObj => arrObj.filter(e => e && e.toString() == "[object Object]").length;

console.log(count(arr));
0 голосов
/ 01 июня 2019

Не очень типично, вам просто нужно извлечь объект с ключами в нем, и вы можете получить их количество

Taking an array having null, array, blank object and string and object having value in it.

    var arr = [1, [], null, 3, 4, 5, {key: 'val'}, {}, {}, 'foo']

    const result = arr.filter(val => (val instanceof Object && Object.keys(val).length > 0));

    Now get the count of objects having values in it.

    console.log('result', result.length);
0 голосов
/ 01 июня 2019

Если вы хотите подсчитать количество вхождений без создания почти неиспользуемого промежуточного массива, вы можете использовать reduce:

const count = arr => arr.reduce((a, item) => a + (item && item.constructor === Object), 0);

console.log(count([1, [], null, 3, 4, 5, {}, {}, {}, 'foo']));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...