如何从数组中获取前 N 个元素
How to get first N number of elements from an array
我正在使用 Javascript(ES6) /Facebook React 并尝试获取大小不同的数组的前 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);
不要尝试使用地图功能来做到这一点。映射函数应该用于将值从一个事物映射到另一个事物。当输入输出数匹配时。
在这种情况下,使用阵列上也可用的过滤功能。当您想要有选择地获取符合特定条件的值时,使用过滤器功能。然后你可以像
这样写你的代码
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 link .这将改变数组。
如果您不关心不变性或不想分配内存,即对于游戏,这将是最快的方法。
清空数组
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);
使用 LInQer 你可以:
Enumerable.from(list).take(3).toArray();
使用一个简单的例子:
var letters = ["a", "b", "c", "d"];
var letters_02 = letters.slice(0, 2);
console.log(letters_02)
Output: ["a", "b"]
var letters_12 = letters.slice(1, 2);
console.log(letters_12)
Output: ["b"]
注意:slice
仅提供浅层 副本并且不会 修改原始数组。
使用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);
// => []
只需尝试从列表中获取前 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最新特性编写的LINQ to object的完整实现(javascript)。
Github 存储库是:https://github.com/IlanAmoyal/WebPartyLinq
Pawel 的答案似乎是资源关键环境中的最佳选择,并且可以丢弃剩余的元素。
考虑到数组已经较小的情况,这是一个小小的改进:
if (arr.length > n) arr.length = n
slice() 方法 returns 将数组的一部分浅拷贝到从头到尾选择的新数组对象中(不包括尾),其中开始和结束代表项目的索引大批。原数组不会被修改
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"]
使用切片法
javascript slice()
方法 returns 将数组的一部分转换为从头到尾选择的新数组对象,其中开始和结束代表该数组中项目的索引。原数组不会被修改
语法: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)
我正在使用 Javascript(ES6) /Facebook React 并尝试获取大小不同的数组的前 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);
不要尝试使用地图功能来做到这一点。映射函数应该用于将值从一个事物映射到另一个事物。当输入输出数匹配时。
在这种情况下,使用阵列上也可用的过滤功能。当您想要有选择地获取符合特定条件的值时,使用过滤器功能。然后你可以像
这样写你的代码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 link .这将改变数组。
如果您不关心不变性或不想分配内存,即对于游戏,这将是最快的方法。
清空数组
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);
使用 LInQer 你可以:
Enumerable.from(list).take(3).toArray();
使用一个简单的例子:
var letters = ["a", "b", "c", "d"];
var letters_02 = letters.slice(0, 2);
console.log(letters_02)
Output: ["a", "b"]
var letters_12 = letters.slice(1, 2);
console.log(letters_12)
Output: ["b"]
注意:slice
仅提供浅层 副本并且不会 修改原始数组。
使用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);
// => []
只需尝试从列表中获取前 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最新特性编写的LINQ to object的完整实现(javascript)。
Github 存储库是:https://github.com/IlanAmoyal/WebPartyLinq
Pawel 的答案似乎是资源关键环境中的最佳选择,并且可以丢弃剩余的元素。
考虑到数组已经较小的情况,这是一个小小的改进:
if (arr.length > n) arr.length = n
slice() 方法 returns 将数组的一部分浅拷贝到从头到尾选择的新数组对象中(不包括尾),其中开始和结束代表项目的索引大批。原数组不会被修改
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"]
使用切片法
javascript slice()
方法 returns 将数组的一部分转换为从头到尾选择的新数组对象,其中开始和结束代表该数组中项目的索引。原数组不会被修改
语法: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)