我正在使用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} />);
    });

这并没有起作用,因为map没有一个set函数。

你能帮帮我吗?


当前回答

arr.length = n

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

如果你不关心不可变性或不想分配内存,例如对于游戏来说,这将是最快的方法。

清空数组

arr.length = 0

其他回答

arr.length = n

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

如果你不关心不可变性或不想分配内存,例如对于游戏来说,这将是最快的方法。

清空数组

arr.length = 0

我相信你在寻找的是:

// ...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>   
)

虽然这个问题很老了,但到2021年,将会有一个完整的LINQ实现,用ECMAScript (javascript)的最新特性编写对象。

Github存储库是:https://github.com/IlanAmoyal/WebPartyLinq

可以使用数组索引进行过滤。

var months = ['Jan', 'March', 'April', 'June']; month = Months .filter((month,idx) => idx < 2) console.log(个月);

用LInQer你可以做到:

Enumerable.from(list).take(3).toArray();