Я работаю с Javascript (ES6) / реакцией FaceBook и пытаюсь получить первые 3 элемента массива, который различается по размеру. Я хотел бы сделать эквивалент Linq take (n).
В моем файле Jsx у меня есть следующее:
var items = list.map(i => {
return (
<myview item={i} key={i.id} />
);
});
Затем, чтобы получить первые 3 предмета, которые я пробовал
var map = new Map(list);
map.size = 3;
var items = map(i => {
return (<SpotlightLandingGlobalInboxItem item={i} key={i.id} />);
});
Это не сработало, так как карта не имеет установленной функции.
Можете ли вы помочь?
javascript
reactjs
user1526912
источник
источник
list.slice(0, 3);
а затем повторить это?Ответы:
Я считаю, что вы ищете это:
источник
Чтобы получить первые
n
элементы массива, используйтеисточник
slice
функция для массивов возвращает поверхностную копию массива и не изменяет исходный массив. developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…Это может быть удивительно, но
length
свойство массива не только используется для получения количества элементов массива, но также доступно для записи и может использоваться для установки MDN-ссылки на длину массива. . Это изменит массив.Если текущий массив больше не нужен и вы не заботитесь об неизменяемости или не хотите выделять память, то есть для игры самый быстрый способ
очистить массив
источник
arr = []
?Не пытайтесь делать это с помощью функции карты. Функция карты должна использоваться для отображения значений из одного в другое. Когда количество входов и выходов совпадают.
В этом случае используйте функцию фильтра, которая также доступна в массиве. Функция фильтра используется, когда вы хотите выборочно принимать значения, обрабатывая определенные критерии. Тогда вы можете написать свой код как
источник
Вы можете фильтровать с помощью
index
массива.источник
.filter
сам по себе это не лучший выбор, по крайней мере, если входной массив может быть длинным..filter
проходит через каждый элемент массива, проверяя его состояние..slice
не будет делать этого, а просто извлечет первые n элементов, а затем остановит обработку - что определенно будет тем, что вам нужно для длинного списка. (Как @elQueFaltaba уже сказал в комментариях к другому ответу.)Следующее сработало для меня.
Вот пример
источник
slice
но во втором вы используетеsplice
.["Apple", "Mango"]
от этого. Первая часть слайса - это не «с чего начать удаление», а с чего начать слайс. Он не изменяет исходный массив и ничего не удаляет.С https://github.com/Siderite/LInQer вы можете Enumerable.from (список) .take (3) .toArray ();
источник
Использовать фильтр
Не лучшая практика, а другой способ
const cutArrByN = arr.filter((item, idx) => idx < n);
источник