不能真正理解这个功能

时间:2017-12-19 17:42:30

标签: javascript arrays ecmascript-6

我真的无法理解使用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));

4 个答案:

答案 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]

数组