Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 10.12.2019, 06:39
Аспирант
Отправить личное сообщение для yozuul Посмотреть профиль Найти все сообщения от yozuul
 
Регистрация: 14.06.2013
Сообщений: 64

Сравнение значений ключей объектов массива
Приветствую.
Подскажите, как проверить каждое значение?
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)
}
Ответить с цитированием
  #2 (permalink)  
Старый 10.12.2019, 07:37
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,214

Сообщение от yozuul
как проверить каждое значение?
Это два цикла.
В первом берешь элемент... А во втором перебираешь остальные и сравниваешь.
Ответить с цитированием
  #3 (permalink)  
Старый 10.12.2019, 08:44
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

Сообщение от ksa
А во втором перебираешь
а за один можешь?
Ответить с цитированием
  #4 (permalink)  
Старый 10.12.2019, 09:00
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Интересно откуда они вообще появились.
Ответить с цитированием
  #5 (permalink)  
Старый 10.12.2019, 09:01
Аспирант
Отправить личное сообщение для yozuul Посмотреть профиль Найти все сообщения от yozuul
 
Регистрация: 14.06.2013
Сообщений: 64

а можно оба варианта в качестве примера?
за один, это через 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 объектами. Как привести к нужному виду? Или такой циклом перебрать.
Ответить с цитированием
  #6 (permalink)  
Старый 10.12.2019, 09:04
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,214

Сообщение от рони
а за один можешь?
Можно исходные данные превратить в JSON-строку... И в цикле анализировать вхождения элементов...
Ответить с цитированием
  #7 (permalink)  
Старый 10.12.2019, 09:06
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,214

Сообщение от yozuul
Не понимаю, почему ...
Просто проделай сам то, что ты заставляешь делать комп. Тогда многое прояснится...
Ответить с цитированием
  #8 (permalink)  
Старый 10.12.2019, 09:21
Аспирант
Отправить личное сообщение для yozuul Посмотреть профиль Найти все сообщения от yozuul
 
Регистрация: 14.06.2013
Сообщений: 64

Сообщение от ksa Посмотреть сообщение
Просто проделай сам
Что это за приём такой? На спичках?
Ответить с цитированием
  #9 (permalink)  
Старый 10.12.2019, 09:38
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

поиск объектов с одинаковой структурой
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)
Ответить с цитированием
  #10 (permalink)  
Старый 10.12.2019, 10:00
Аспирант
Отправить личное сообщение для yozuul Посмотреть профиль Найти все сообщения от yozuul
 
Регистрация: 14.06.2013
Сообщений: 64

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

Что это?
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Выборка из массива объектов при помощи filter. AndriiS Общие вопросы Javascript 20 06.01.2021 14:57
Получить массив из из массива объектов gunner17 Общие вопросы Javascript 2 07.03.2019 13:31
Удаление нескольких объектов из массива konstantin-921 Events/DOM/Window 4 10.03.2018 18:16
Конструктор массива объектов и работа с ними через localStorage pepel266 Общие вопросы Javascript 16 04.11.2015 18:30
Ввод диапазона значений массива с клавиатуры Воскобоенко Общие вопросы Javascript 11 06.06.2015 22:34