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

How to get first N number of elements from an array

本文关键字:元素 获取 数组      更新时间:2023-09-26

我正在使用Javascript(ES6)/FaceBook act,并试图获取大小不同的数组的前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} />);
    });

这不起作用,因为地图没有设置功能。接下来我可以尝试什么?

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

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

你要找的是:

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

使用切片方法

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

语法 : slice(start, end)

假设我们有一个[5,10,15,20,25,30,35]包含 7 个项目的数组,并且我们想要该数组中的前 5 个元素:

let array = [5,10,15,20,25,30,35]
let newArray = array.slice(0,5)
console.log(newArray)

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

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

不要尝试使用映射函数来执行此操作。映射函数应该用于将值从一个事物映射到另一个事物。当输入和输出的数量匹配时。

在这种情况下,请使用数组上也可用的过滤器功能。当您想要有选择地获取某些条件的值时,将使用过滤器功能。然后你可以像

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

只需尝试这样做即可从列表中获取第一个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

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

答案: [1,2,3]

工作原理:

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

以下内容对我有用。

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

使用 lodash,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);
// => []

使用一个简单的例子:

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仅提供拷贝,并且不修改原始数组。

slice() 方法将数组的一部分的浅拷贝返回到从头到尾选择的新数组对象(不包括结束),其中 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"]

了解更多

使用 LInQer,您可以执行以下操作:

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