@OlegAnis

Как перенести объекты из одного массива в другой?

Добрый день!
Есть массив Sigthts = [
{sightname: 'Навестить друзей', time: 12, Importance: 20},
{sightname: 'Музей обороны и блокады Ленинграда', time: 2, Importance: 19},
{sightname: 'Русский музей', time: 5, Importance: 18},
{sightname: 'Музей микроминиатюры «Русский Левша»', time: 3, Importance: 18},
{sightname: 'Медный всадник', time: 1, Importance: 17},
{sightname: 'Музей современного искусства Эрарта', time: 7, Importance: 16},
{sightname: 'Ленинградский зоопарк', time: 9, Importance: 15},
{sightname: 'Петербургский музей кукол', time: 1, Importance: 14},
{sightname: 'Музей восковых фигур', time: 2, Importance: 13},
{sightname: 'Литературно-мемориальный музей Ф.М. Достоевского', time: 2, Importance: 13},
{sightname: 'Зимний дворец Петра I', time: 7, Importance: 12},
{sightname: 'Эрмитаж', time: 8, Importance: 11},
{sightname: 'Исаакиевский собор', time: 5, Importance: 10},
{sightname: 'Спас на Крови', time: 2, Importance: 9},
{sightname: 'Петропавловская крепость', time: 10, Importance: 7},
{sightname: 'Зоологический музей', time: 5.5, Importance: 6},
{sightname: 'Екатерининский дворец', time: 1.5, Importance: 5},
{sightname: 'Кунсткамера', time: 3.5, Importance: 4},
{sightname: 'Казанский собор', time: 4, Importance: 3},
{sightname: 'Всероссийский музей А.С. Пушкина и филиалы', time: 6, Importance: 1} ];

Нужно перенести объекты в новый массив newSigths = [ {sigthname: "", time: "", Importance: ""} ] таким образом, чтобы сумма общего времени (time) этих объектов была меньше или равна 30. То есть в новый массив должны войти первые 6 объектов (12+2+5+3+1+7<=30). Порядок объектов в новом массиве должен остаться таким же.
  • Вопрос задан
  • 88 просмотров
Решения вопроса 1
const f = (arr, limit) => {
	let time = 0
	return arr.reduce((acc, next) => {
		if ((time + next.time) <= limit) {
    	acc.push(next)
        time += next.time
    }
  
    return acc
  }, [])
}

console.log(f(Sigthts, 30))
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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