我真的无法理解使用Array.from
的这个功能。我引用mozilla documentation但它并没有真正说明论点,所以任何人都可以解释这是如何工作的。
const chunk = (arr, size) => Array.from({length: Math.ceil(arr.length / size)}, (v, i) => arr.slice(i * size, i * size + size));
答案 0 :(得分:0)
它会将您的数组分成提供的size
组。
Array.from将根据你给他的内容创建一个数组。如果你使用它在函数中使用的方法,它将创建一个包含所提供元素数的数组。
请在您的控制台中运行:
Array.from({ length: 3 })
它会给你一个包含三个元素的数组。
Array.from的第二个参数用作Array.map。您将函数应用于数组的每个元素。
v
代表元素,i
代表元素的索引。
因此,您的map函数会将提供的数组块化为组:)
const chunk = (arr, size) =>
{
return Array.from(
{
length: Math.ceil(arr.length / size) // Length of the array to be created
},
(v, i) => arr.slice(i * size, i * size + size) //separate the groups
)
}
答案 1 :(得分:0)
Array.from从您提供给它的另一个数组创建一个新数组。上面的函数似乎是从Math.ceil函数创建一个length属性,它的第二个参数是从两个点切割数组," i * size"是起点和" i *尺寸+尺寸"是终点。
这些参数像map函数一样使用。第一个参数,即长度,由第二个参数(箭头函数)操纵,以创建所需的输出。这里的链接提供了很好的细节:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/from
答案 2 :(得分:0)
将数组切割成大小为size
的块,然后将它们粘贴到数组中。
Array.from
的参数是类数组对象和转换函数。
转换功能正在进行分块。
关键是首先创建一个新数组,其计算长度类似于:
const array = [];
array.length = Math.ceil(arr.length / size);
这将创建一个length
个空插槽的数组。
然后将转换函数应用于此新数组,同时引用arr
。
因此arr
用于填充新数组。
const chunk = (arr, size) =>
Array.from({ length: Math.ceil(arr.length / size) },
(v, i) => arr.slice(i * size, i * size + size));
console.log(chunk([1, 2, 3], 2));
答案 3 :(得分:0)
以下是一些代码,您可以从中了解Array.from
函数。
Array.from({ length: 5 }, function(val, idx){
return idx
});
这将创建一个[1, 2, 3, 4, 5]