@prolina

Работа с массивом объектов?

Есть массив объектов (users). Его длина должна быть не больше 3. Изначально массив пустой, а в него добавляются отдельные юзеры. Как только длина массива становится равна 3, нужна дополнительная проверка: если у текущего юзера свойство score(потенциальный 4ый элемент массива) больше чем у какого-либо юзера из массива, то нужно добавить текущего юзера в массив. Например, есть массив объектов юзеров(всего 2 юзера). У каждого объекта юзер score = 3; score = 2 соответственно. У нового юзера score получился = 5. Значит теперь массив должен быть из score = [5, 3]

const users = [
{userName: "123@qwe.qwe", password: "qwer", score: 4}
{userName: "koko@ko.ko", password: "none", score: 2}
{userName: "asd@asd.by", password: "qwertghj", score: 4}
];

const addRecordToTable = () => {
    const user = JSON.parse(localStorage.getItem(keyUser)); //текущий юзер

    if(JSON.parse(localStorage.getItem(keyUsers)=== null)) {
        const users = [user];
       localStorage.setItem(keyUsers, JSON.stringify(users));
    } else {
        let users = JSON.parse(localStorage.getItem(keyUsers)); //получили юзеров, которые уже были добавлены в массив
        if(users.length > 3) {
            users.length = 3;
        }
            if(users.length === 3) {
            users.forEach(u => {
                if(user.score > u.score) {
                    users[0] = user;
                }
            });
        }
        users.push(user);
        localStorage.setItem(keyUsers, JSON.stringify(users));
    }
    //const users = JSON.parse(localStorage.getItem(keyUsers));
    createTableRecords();
};
  • Вопрос задан
  • 134 просмотра
Решения вопроса 1
Fzero0
@Fzero0
Вечный студент
5d31a34bcc788146928754.png
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Если я вас верно понял
let users = [];
const limit = 3;

function addToArray (obj) {
	if (limit <== users.length) {
		users.sort((it,  nx) => ( it.score < nx.score ? -1 :  it.score > nx.score ? 1 :  0 )).shift()
	}
        users.push(obj)
}
addToArray ({userName: "123@qwe.qwe", password: "qwer", score: 4})
console.log([...users])
addToArray ({userName: "koko@ko.ko", password: "none", score: 2})
console.log([...users])
addToArray ({userName: "asd@asd.by", password: "qwertghj", score: 4})
console.log([...users])
addToArray ({userName: "222222@asd.by", password: "qwertghj", score: 5})
console.log([...users])
addToArray ({userName: "222222@asd.by", password: "qwertghj", score: 2})
console.log([...users])


5d319f7b8c91d644912918.png
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы