Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Сравнение значений ключей объектов массива (https://javascript.ru/forum/misc/79044-sravnenie-znachenijj-klyuchejj-obektov-massiva.html)

SuperZen 10.12.2019 10:33

let clients = [
  {
    name: "John",
    age: "25"
  },
  {
    name: "John",
    age: "25"
  },
  {
    name: "Tom",
    age: "30"
  },
  {
    name: "Tom",
    age: "42"
  }
]

// let sameClients = clients.reduce((acc, cur, idx) => {
//   if (clients.find(({ name, age }, i) => i !== idx && name === cur.name && age === cur.age)) {
//     if (!acc.find(({ name, age }) => name === cur.name && age === cur.age)) {
//       acc.push(cur)
//     }
//   }
//   return acc
// }, [])

// по всем ключам объекта
let sameClients = clients.reduce((acc, cur, idx) => {
  if (
    clients.find((c, i) => i !== idx && JSON.stringify(c) === JSON.stringify(cur))
    &&
    !acc.find((c) => JSON.stringify(c) === JSON.stringify(cur))
  ) {
    acc.push(cur)
  }
  return acc
}, [])

console.log(sameClients)
// for (let i = 0; i < client.length; i++) {
//   если имена и возрасты объектов равны, то
//   sameClient.push(client[i].name, client[i].age)
// }

рони 10.12.2019 10:42

Цитата:

Сообщение от yozuul
Что это?

обьект, ключ обьекта, если ключа нет берём ноль, если есть то прежнее значение ключа и увеличиваем на 1.
в качестве ключа temp связка ключей из элемента(объекта) массива clients.
Цитата:

В ES6 ключи можно назначать динамически, помещая выражение, определяющее имя, в квадратные скобки ([])
Динамические ключи

ksa 10.12.2019 12:31

Цитата:

Сообщение от yozuul
На спичках?

Именно так. :yes:
Пока ты не научишься "думать как программа", у тебя не получится составлять алгоритмы.


Часовой пояс GMT +3, время: 12:27.