ES6 配列のいくつかの新しいメソッド

目次

        1.Array.from()

        2.Array.of()

        3.Array.copyWithin()

        4.Array.find()とArray.findIndex()

        5.Array.fill()

        6.Array.keys()、Array.values()およびArray.entries()

        7.Array.includes()

        8.Array.flat()とArray.flatMap()


 

        1.Array.from()

        Array.from()メソッドは、Array-like または Iterable オブジェクトの Array インスタンスの新しい浅いコピーを作成します。

console.log(Array.from('foo'));
// 输出: Array ["f", "o", "o"]

console.log(Array.from([1, 2, 3], x => x + x));
// 输出: Array [2, 4, 6]

        2.Array.of()

        Array.of()メソッドは、引数の数や型に関係なく、可変数の引数を持つ新しい配列インスタンスを作成します。

        Array.of() コンストラクターと コンストラクターArray の違いは、整数パラメーターの処理です。単一の要素7Array.of(7) を持つ配列 が作成され 、 長さ 7 の空の配列が作成されます (注:これは、配列ではなく、7 つの空のスロットを持つ配列を指します)。 7の配列)Array(7) undefined

Array.of(7);       // [7]
Array.of(1, 2, 3); // [1, 2, 3]

Array(7);          // [ , , , , , , ]
Array(1, 2, 3);    // [1, 2, 3]

Array.of() // []
Array.of(undefined) // [undefined]
Array.of(1) // [1]
Array.of(1, 2) // [1, 2]

   

        3.Array.copyWithin()

        copyWithin()メソッドの浅いコピーは、配列の一部を同じ配列内の別の場所にコピーし、元の配列の長さを変更せずにそれを返します。

const array1 = ['a', 'b', 'c', 'd', 'e'];

// 将索引3处的元素复制到索引0
console.log(array1.copyWithin(0, 3, 4));
// 输出: Array ["d", "b", "c", "d", "e"]

// 将从索引3到结尾的所有元素复制到索引1
console.log(array1.copyWithin(1, 3));
// 输出: Array ["d", "d", "e", "d", "e"]
// 这里因为我们需要赋值的元素只是一个,所以我们选中n个复制的元素后,复制时会将选中的元素全部复制到需要赋值的元素处,需要赋值的元素后的n-1个元素也会被赋值改变

        4.Array.find()とArray.findIndex()

        find() メソッドは、条件を満たす配列内の最初の値を返します。それ以外の場合は未定義を返します。findIndex() メソッドは、配列内で条件を満たす最初の要素のインデックス値を返します。条件を満たす要素が見つからない場合は -1 を返します。

const array1 = [5, 12, 8, 130, 44];

const result1 = array1.find(element => element > 10)
console.log(result1)        //12        //返回的是满足条件的第一个值

const result2 = array1.findIndex(element => element > 10)
console.log(result2)        // 1        //返回满足条件的第一个值的索引

        5.Array.fill()

        fill() メソッドは、固定値 (value) を使用して、配列内の開始インデックス (start) から終了インデックス (end) までのすべての要素を埋めます。終了インデックスは含まれません。

const array1 = [1, 2, 3, 4];

// f将索引2-4之间的值填充为0
console.log(array1.fill(0, 2, 4));
// 输出: [1, 2, 0, 0]

// 从索引1开始全部填充为5
console.log(array1.fill(5, 1));
// 输出: [1, 5, 5, 5]

console.log(array1.fill(6));
// 输出: [6, 6, 6, 6]

        6.Array.keys()、Array.values()およびArray.entries()

        keys()メソッドは、配列内の各インデックス付きキーを含むオブジェクトを返しますArray Iterator

        values()Array Iterator メソッドは、配列の各インデックスの値を含む 新しいオブジェクトを返します 。

        entries()メソッドは、配列内の各インデックスのキーと値のペアを含む     新しいArray Iteratorオブジェクトを返します。

let array1 = ['a','b','c']

for(let index of array1.keys()){
    console.log(index)
}
//0    //1    //2

for(let index of array1.values()){
    console.log(index)
}
//'a'    //'b'    //'c'

for(let index of array1.entries()){
    console.log(index)
}
//[0,'a']    //[1,'b']    //[2,'c']

        7.Array.includes()

                        includes() メソッドは、配列に要素が含まれているかどうかを確認するために使用され、要素が含まれている場合は true を返し、含まれていない場合は false を返します。

let array1 = ['a','b','c']

let result1 = array1.includes('a')
let result2 = array1.includes('d')

console.log(result1)        //true
console.log(result1)        //false

        8.Array.flat()とArray.flatMap()

        flat() このメソッドは、指定された深さに従って配列を再帰的にトラバースし、すべての要素をトラバースされたサブ配列内の要素と結合して、新しい配列を返します。

        flatMap() メソッドは、最初に map 関数を使用して各要素をマップし、次に結果を新しい配列に圧縮します。これは、  深さ 1 のフラット マップをアタッチするのとほぼ同じです が、  通常は 1 つのメソッドに組み合わせるとわずかに効率的です。flatMap

const arr1 = [0, 1, 2, [3, 4]];

console.log(arr1.flat())
// 输出: [0, 1, 2, 3, 4]

const arr2 = [0, 1, 2, [[[3, 4]]]];

console.log(arr2.flat(2));
// expected output: [0, 1, 2, [3, 4]]

console.log(arr2.flat(3));
// expected output: [0, 1, 2, 3, 4]
// flat()  括号内有一个可选的参数deepth,表示排平数组的层数
var arr1 = [1, 2, 3, 4];

arr1.map(x => [x * 2]);
// [[2], [4], [6], [8]]

arr1.flatMap(x => [x * 2]);
// [2, 4, 6, 8]

// 只有一层
arr1.flatMap(x => [[x * 2]]);
// [[2], [4], [6], [8]]

おすすめ

転載: blog.csdn.net/Jsy_997/article/details/124590406