Подсчитайте свойства длины каждого объекта. - PullRequest
0 голосов
/ 10 февраля 2019

Итак, я хочу иметь возможность подсчитывать количество свойств в каждом объекте в массиве ...

    value = [
   0: { personId: "0003678", seniorStatus: "Yes", juniors: "maybe" }, //3
   1: { personId: "0001657", seniorStatus: "No", juniors: "No" }, //3
   2: { personId: "0002345", seniorStatus: "No", juniors: "No", infants: "Maybe" } //4

В основном я хочу сделать это, чтобы проверить наличие изменений.Если более 3 свойств в любом из объектов.Я умею считать количество объектов, в данном случае их 3. Но нужно посчитать свойства внутри.Если больше 3 вернет истину.

Я изо всех сил пытаюсь найти что-нибудь, что может пройти мимо подсчета объектов.Я использую lodash, если это полезно для ответа.

Ответы [ 2 ]

0 голосов
/ 10 февраля 2019

Рассмотрим это как расширение подхода Ori Drori .В случае, если вам нужно получить объекты, которые имеют более чем N клавиш , вы можете использовать filter () следующим образом:

const input = [
  {personId:"0003678", seniorStatus:"Yes", juniors:"maybe" },
  {personId:"0001657", seniorStatus:"No", juniors:"No" },
  {personId:"0002345", seniorStatus:"No", juniors:"No", infants:"Maybe"}
];
  
const filterObj = (objs, numProps) =>
{
    return objs.filter(o => Object.keys(o).length > numProps);
}
  
console.log("Objs with more than 3 props: ", filterObj(input, 3));
console.log("Objs with more than 2 props: ", filterObj(input, 2));
0 голосов
/ 10 февраля 2019

Отображение массива на длину Object.keys() каждого объекта и проверка, если больше 3:

const values = [{"personId":"0003678","seniorStatus":"Yes","juniors":"maybe"},{"personId":"0001657","seniorStatus":"No","juniors":"No"},{"personId":"0002345","seniorStatus":"No","juniors":"No","infants":"Maybe"}]
   
const result = values.map(o => Object.keys(o).length > 3)

console.log(result)

Или используйте lodash _.size(), чтобы получить количество свойств в каждом объекте, а затем проверьте, не меньше ли 3 число с * 1016.*_.lt():

const values = [{"personId":"0003678","seniorStatus":"Yes","juniors":"maybe"},{"personId":"0001657","seniorStatus":"No","juniors":"No"},{"personId":"0002345","seniorStatus":"No","juniors":"No","infants":"Maybe"}]
   
const result = values.map(_.flow(
  _.size,
  _.partial(_.lt, 3)
))

console.log(result)
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.11/lodash.min.js"></script>
...