Как получить первые N элементов массива
Я работаю с Javascript (ES6) и React от 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} />);
});
Однако это не сработало, так как у объекта Map
нет функции set
. Что мне попробовать в следующий раз?
5 ответ(ов)
Чтобы получить первые n
элементов массива, используйте следующий код:
const slicedArray = array.slice(0, n);
Функция slice
создает новый массив, содержащий элементы, начиная с индекса 0
и до индекса n
(не включая его).
Я полагаю, что то, что вам нужно, выглядит следующим образом:
// ...внутри функции render()
var size = 3;
var items = list.slice(0, size).map(i => {
return <myview item={i} key={i.id} />
});
return (
<div>
{items}
</div>
)
Этот код обрезает массив list
до первых трех элементов и создаёт компонент myview
для каждого из них, используя i.id
в качестве уникального ключа. Надеюсь, это поможет!
Использование метода Slice
Метод slice()
в JavaScript возвращает часть массива в новом массиве, выбранном от начального до конечного индекса, где начальный и конечный индексы представляют позиции элементов в исходном массиве. При этом оригинальный массив не изменяется.
Синтаксис: slice(start, end)
Допустим, у нас есть массив с 7 элементами [5,10,15,20,25,30,35]
, и мы хотим получить первые 5 элементов из этого массива:
let array = [5,10,15,20,25,30,35];
let newArray = array.slice(0, 5);
console.log(newArray);
В результате newArray
будет содержать [5, 10, 15, 20, 25]
.
Вы можете отфильтровать массив, используя его индекс. Например, в следующем коде мы оставляем только два первых элемента массива months
:
var months = ['Jan', 'March', 'April', 'June'];
months = months.filter((month, idx) => idx < 2);
console.log(months);
В результате выполнения этого кода вы получите массив, содержащий только 'Jan' и 'March'.
Не пытайтесь сделать это с помощью функции map
. Функция map
должна использоваться для преобразования значений из одного формата в другой, когда количество входных и выходных данных совпадает.
В вашем случае лучше использовать функцию filter
, которая также доступна для массивов. Функция filter
предназначена для выборки значений, соответствующих определённым критериям. Вот как можно переписать ваш код:
var items = list
.filter((i, index) => (index < 3))
.map((i) => {
return (
<myview item={i} key={i.id} />
);
});
Таким образом, сначала отфильтровав элементы, вы получите нужные данные, а затем сможете безопасно применить map
для их отображения.
Как перемешать (сделать случайным) массив в JavaScript?
Как объединить два массива в JavaScript и удалить дубликаты?
Как очистить массив в JavaScript?
В чем разница между String.slice и String.substring?
Выбор последнего элемента в массиве JavaScript