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

我正在使用Javascript(ES6) /FaceBook反应并尝试获取大小不同的数组的前3个元素。我想做相当于Linq ake(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} />);});

这不起作用,因为map没有set函数。

你能帮忙吗?

957999 次浏览

要获取数组的前n元素,请使用

const slicedArray = array.slice(0, n);

不要尝试使用map函数这样做。Map函数应该用于将值从一件事映射到另一件事。当进审量和输出匹配时。

在这种情况下,使用数组上也可用的过滤器函数。当您想要选择性地获取处理某些条件的值时,使用过滤器函数。然后您可以编写类似的代码

var items = list.filter((i, index) => (index < 3)).map((i, index) => {return (<myview 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>)
arr.length = n

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

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

清空数组

arr.length = 0

下面的工作对我来说。

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

您可以使用数组的index进行过滤。

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

林Q儿你可以做:

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

举一个简单的例子:

var letters = ["a", "b", "c", "d"];var letters_02 = letters.slice(0, 2);console.log(letters_02)

输出:["a","b"]

var letters_12 = letters.slice(1, 2);console.log(letters_12)

输出:["b"]

注意:slice仅提供副本,修改原始数组。

使用豆沙take函数,您可以通过以下方式实现:

_.take([1, 2, 3]);// => [1] 
_.take([1, 2, 3], 2);// => [1, 2] 
_.take([1, 2, 3], 5);// => [1, 2, 3] 
_.take([1, 2, 3], 0);// => []

只需尝试此操作即可从列表中获取第一个n元素:

const slicedList = list.slice(0, n);

示例:

const list = [1,2,3,4,5]console.log(list.slice(0, 3)) // Should return [1,2,3]console.log(list.slice(0, 10)) // Returns [1,2,3,4,5] since this is all we have in 1st 10 elements

虽然这个问题很老,但就2021年而言,使用ECMAScript(javascript)的最新功能编写的LINQ对象有一个完整的实现。

GitHub仓库是:https://github.com/IlanAmoyal/WebPartyLinq

该方法将数组的一部分的浅拷贝返回到从开始到结束(不包括结束)选择的新数组对象中,其中start和end表示该数组中项目的索引。原始数组不会被修改。

const animals = ['ant', 'bison', 'camel', 'duck', 'elephant'];
console.log(animals.slice(2));// expected output: Array ["camel", "duck", "elephant"]
console.log(animals.slice(2, 4));// expected output: Array ["camel", "duck"]
console.log(animals.slice(1, 5));// expected output: Array ["bison", "camel", "duck", "elephant"]
console.log(animals.slice(-2));// expected output: Array ["duck", "elephant"]
console.log(animals.slice(2, -1));// expected output: Array ["camel", "duck"]

了解更多

使用切片方法

javascriptslice()方法将数组的一部分返回到从头到尾选择的新数组对象中,其中start和end表示该数组中项目的索引。不会修改原始数组。

语法: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)

也许我错过了一些东西,但建议使用splice()感觉就像踢开了一扇门?当然,重要的是要记住这会修改数组。

const myArray = ['one', 'two', 'three', 'four', 'five', 'six', 'seven',]
myArray.splice(3)
console.log(myArray)// expected output: ['one', 'two', 'three']

也可以抓取数组中不属于保存内容的元素:

const myArray = ['one', 'two', 'three', 'four', 'five', 'six', 'seven',]
const afterFirstThree = myArray.splice(3)
console.log(myArray)// expected output: ['one', 'two', 'three']
console.log(afterFirstThree)// expected output: ['four', 'five', 'six', 'seven']
// if n is larger than myArray.length the entire array is kept and if trying to grab the return, it will be an empty array

[1,2,3,4,5,6,7,8,8].片(0,3)=同时返回前3个元素。

答案:[1,2,3]

它是如何运作的

该方法将数组的一部分的浅拷贝返回到从开始到结束(不包括结束)选择的新数组对象中,其中start和end表示该数组中项目的索引。原始数组不会被修改。