Я работаю с 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} />);
});
Это не сработало, так как у карты нет заданной функции.
Можете ли вы помочь?
Я считаю, что вы ищете:
// ...inside the render() function
var size = 3;
var items = list.slice(0, size).map(i => {
return <myview item={i} key={i.id} />
}
return (
<div>
{items}
</div>
)
Чтобы получить первые n
элементы массива, используйте
array.slice(0, n);
slice
для массивов возвращает поверхностную копию массива и не изменяет исходный массив. developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/...
Это может быть удивительным, но свойство length
массива используется не только для получения количества элементов массива, но также доступно для записи и может использоваться для установки MDN-ссылки на длину массива. Это изменит массив.
Если текущий массив больше не нужен, и вы не заботитесь об неизменности или не хотите выделять память, то есть для игры самый быстрый способ
arr.length = n
очистить массив
arr.length = 0
arr = []
?
Не пытайтесь делать это с помощью функции карты. Функция карты должна использоваться для сопоставления значений от одной вещи к другой. Когда количество входных и выходных данных соответствует.
В этом случае используйте функцию фильтра, которая также доступна в массиве. Функция фильтра используется, когда вы хотите выборочно принимать значения, обрабатывающие определенные критерии. Затем вы можете написать свой код, например
var items = list
.filter((i, index) => (index < 3))
.map((i, index) => {
return (
<myview item={i} key={i.id} />
);
});
Следующее сработало для меня.
array.slice( where_to_start_deleting, array.length )
Вот пример
var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.splice(2, fruits.length);
//Banana,Orange
Вы можете фильтровать, используя index
массива.
var months = ['Jan', 'March', 'April', 'June'];
months = months.filter((month,idx) => idx < 2)
console.log(months);
list.slice(0, 3);
а затем повторить это?