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

yozuul 10.12.2019 06:39

Сравнение значений ключей объектов массива
 
Приветствую.
Подскажите, как проверить каждое значение?
let client = []
let sameClient = []

client[0] = {
   name: "John",
   age: "25"
}
client[1] = {
   name: "John",
   age: "25"
}
client[2] = {
   name: "Tom",
   age: "30"
}
client[3] = {
   name: "Tom",
   age: "42"
}

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

ksa 10.12.2019 07:37

Цитата:

Сообщение от yozuul
как проверить каждое значение?

Это два цикла. ;)
В первом берешь элемент... А во втором перебираешь остальные и сравниваешь.

рони 10.12.2019 08:44

Цитата:

Сообщение от ksa
А во втором перебираешь

а за один можешь? :)

laimas 10.12.2019 09:00

Интересно откуда они вообще появились.

yozuul 10.12.2019 09:01

а можно оба варианта в качестве примера?
за один, это через reduce?
и ещё, подскажите что не так делаю.
я привёл пример массива, но у меня не получается именно такой сделать.
Есть такая функция:
let clients = []
let index = 0;
for (let key of this.data) {
   clients[index] = {
      name: name,
      age: age
   }
   index++
}
[ { name: 'John', age: '25' } ]
[ { name: 'John', age: '25' } ]
[ { name: 'Tom', age: '30' } ]
[ { name: 'Tom', age: '42' } ]

Не понимаю, почему получается 4 массива, а не один с 4 объектами. Как привести к нужному виду? Или такой циклом перебрать.

ksa 10.12.2019 09:04

Цитата:

Сообщение от рони
а за один можешь?

Можно исходные данные превратить в JSON-строку... И в цикле анализировать вхождения элементов...

ksa 10.12.2019 09:06

Цитата:

Сообщение от yozuul
Не понимаю, почему ...

Просто проделай сам то, что ты заставляешь делать комп. Тогда многое прояснится... ;)

yozuul 10.12.2019 09:21

Цитата:

Сообщение от ksa (Сообщение 517218)
Просто проделай сам

Что это за приём такой? На спичках?

рони 10.12.2019 09:38

поиск объектов с одинаковой структурой
 
yozuul,
const clients = [
 { name: 'John', age: '25' },
 { name: 'John', age: '25' },
 { name: 'Tom', age: '30' },
 { name: 'Tom', age: '42' } ], temp = {}, sameClient = [];
clients.forEach(({name, age}) => {temp[[name, age]] = (temp[[name, age]] || 0) + 1;temp[[name, age]] == 2 && sameClient.push({name, age})})
console.table(sameClient)

yozuul 10.12.2019 10:00

рони,
Ого. А как это вообще работает?
temp[[name, age]] = (temp[[name, age]] || 0) + 1

Что это?


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