Js - проверить, совпадают ли вложенные значения объекта - PullRequest
0 голосов
/ 07 февраля 2020

У меня есть эти вложенные объекты. Как я могу проверить, совпадают ли идентификаторы group_id?

console.log(getData);

{…}
    "$": function g()​
    0: {…}
        DT_RowId: "row_1"
        groups: Object { group_id: 2, … }
    1: {…}
        DT_RowId: "row_2"
        groups: Object { group_id: 2, … }
    2: {…}
        DT_RowId: "row_3"
        groups: Object { group_id: 2, … }
    3: {…}
        DT_RowId: "row_4"
        groups: Object { group_id: 2, … }           

A .each () предоставляет мне:

$.each( getData, function ( id, val ) {
    console.log(val.groups.group_id);
});

2
2
2
2

Ответы [ 4 ]

1 голос
/ 07 февраля 2020

Непонятно, что это за данные. Если он в формате массива every() - это то, что вам нужно, сравните его с первым значением индекса

var objData = [
  { groups: { group_id: 2 } },
  { groups: { group_id: 2 } },
  { groups: { group_id: 2 } },
  { groups: { group_id: 2 } },
  { groups: { group_id: 2 } },
]

var allMatch = objData.every((n, i, a) => n.groups.group_id===a[0].groups.group_id)

console.log(allMatch)
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.2.4/jquery.min.js"></script>

Кажется, что это может быть объект, в этом случае простое преобразование может превратить его в массив

var objData = {
  '$': {},
  0: { groups: { group_id: 2 } },
  1: { groups: { group_id: 2 } },
  2: { groups: { group_id: 2 } },
  3: { groups: { group_id: 2 } },
  4: { groups: { group_id: 2 } },
}

var allMatch = Object.values(objData)
  .filter(o => o.groups)
  .every((n, i, a) =>
    n.groups.group_id === a[0].groups.group_id
  )

console.log(allMatch)
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.2.4/jquery.min.js"></script>
0 голосов
/ 07 февраля 2020

, если getData является объектом

  Object.keys(getData).every(key => getData[key].group_id === getData[0].group_id)

Сначала мы получаем ключи контейнера объекта getData, а затем используем массив ключей для доступа к объекту getData, чтобы проверить каждый obj.group_id

, если getData является массивом, содержащим объекты

  getData.every(obj => getData[obj].group_id === getData[0].group_id)

Аналогично приведенному выше, за исключением того, что мы можем напрямую перебирать массив объектов

0 голосов
/ 07 февраля 2020

Вы можете использовать Object.keys для итерации, хотя объект и использовать every для проверки всех значений, удовлетворяющих условию.

const nestedObj = {
    0: {
        DT_RowId: "row_1",
        groups: { group_id: 2}
    },
    1: {
        DT_RowId: "row_2",
        groups: { group_id: 2}
    },
    2: {
        DT_RowId: "row_3",
        groups: { group_id: 2}
    },
    3: {
        DT_RowId: "row_4",
        groups: { group_id: 2}
    }    

}

const GROUP_ID = nestedObj[0].groups.group_id;
const isGroupIdSame = Object.keys(nestedObj).every(key => nestedObj[key].groups.group_id === GROUP_ID);

console.log(isGroupIdSame)
0 голосов
/ 07 февраля 2020

В случае, если это вложенные объекты, вы можете сделать что-то вроде: Object.values(getData).map(val => val.groupId).every((groupId, i, arr) => groupId === arr[0]).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...