@boga-net

Как найти в массиве объектов нужный объект по ключу?

Есть массив:

let cards = [
	{
		id: 1,
		name: 'card 1',
		img: '',
		des: '<h2>Card 1</h2>' +
				 '<p>Card 1</p>'
	},
	{
		id: 2,
		name: 'card 2',
		img: '',
		des: '<h2>Card 2</h2>' +
				 '<p>Card 2</p>'
	}
]

И функция, для определения случайного числа:

function cardRandom(min, max) {
	return Math.round(Math.random() * (max - min) + min);
};

И элемент, который вызывает функцию нахождения случайного числа и передаёт это число в другую функцию, в виде номера. Каким именно методом перебрать массив объектов, чтобы получить соответствующий объект, под идентификационным номером, соответствующим этому числу?

$('#new-card').on('click', function() {
	let num = cardRandom(1, 51);
	getCard(num);
});

function getCard(num) {

}

Есть filter(), each(), map(), $.grep, find(), цикл for ()
Что лучше использовать? Объектов будет несколько десятков. Поиск рандомный, по ID, с дальнейшим выводом всей информации в объекте.

Для удобства - https://jsfiddle.net/ouodkeLn/365/
  • Вопрос задан
  • 1952 просмотра
Решения вопроса 1
0xD34F
@0xD34F Куратор тега JavaScript
const getCard = num => cards.find(n => n.id === num);
// ...
const card = getCard(cardRandom(1, 51));

Правда, не очень понятно, зачем такие сложности. Кроме того, непонятно, гарантируется ли существование объекта с указанным id. Может, лучше использовать случайное число как индекс? Типа так:

const card = cards[Math.random() * cards.length | 0];
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы