如何从数组中获取前N个元素

我正在使用Javascript(ES6)/ FaceBook作出反应,并尝试获取大小变化的数组的前3个元素。我想做相当于Linq take(n)。

在我的Jsx文件中,我有以下内容:

var items = list.map(i => {
  return (
    <myview item={i} key={i.id} />
  );
});

然后得到我尝试的前三个项目

  var map = new Map(list);
    map.size = 3;
    var items = map(i => {
      return (<SpotlightLandingGlobalInboxItem item={i} key={i.id} />);
    });

这不起作用,因为地图没有设置功能。

你能帮忙吗?

斯丁JinJin2020/03/10 09:24:55

使用https://www.npmjs.com/package/manipula,您可以使用LINQ样式:

Manipula.from([0,1]).take(1).toArray();
2020/03/10 09:24:55

以下对我有用。

array.slice( where_to_start_deleting, array.length )

这是一个例子

var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.slice(2, fruits.length);
//Banana,Orange  ->These first two we get as resultant
LEY西门2020/03/10 09:24:55

使用https://github.com/Siderite/LInQer您可以Enumerable.from(list).take(3).toArray();

飞云泡芙2020/03/10 09:24:55

我相信您正在寻找的是:

// ...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>   
)
YOC418115902020/03/10 09:24:55

请勿尝试使用地图功能执行此操作。映射函数应用于将值从一件事映射到另一件事。当输入输出数量匹配时。

在这种情况下,请使用阵列上也可用的过滤器功能。当您要有选择地获取值以匹配特定条件时,可以使用过滤器功能。然后,您可以像这样编写代码

var items = list
             .filter((i, index) => (index < 3))
             .map((i, index) => {
                   return (
                     <myview item={i} key={i.id} />
                   );
              });
阿飞番长2020/03/10 09:24:55

这可能令人惊讶,但是length数组的属性不仅用于获取数组元素的数量,而且还是可写的,可用于设置数组的长度MDN链接这将使数组变异。

如果不再需要当前数组,并且您不关心不变性或不想分配内存,那么对于游戏来说,最快的方法是

arr.length = n

清空数组

arr.length = 0
Sam神乐番长2020/03/10 09:24:55

要获取n数组的第一个元素,请使用

array.slice(0, n);