どのように優雅に複数の配列を一つの配列に統合しますか?
2885 ワード
この文章はよくあるJSアルゴリズムに組み入れられます.最近よくあるJSアルゴリズムの原文の住所について見ました.https://github.com/Chalarangelo/30-seconds-of-code#anagrams-オフ-string-with-duplicates).
どのようにして1つの方法を書くかを考えて、伝達された未知の数の複数の配列を1つの配列に結合し、配列の重複したアイテムを除去しますか?
ここではES 5のconcat()方法とappy()方法を使いますが、基本的なfor循環方法はここでは説明しません.
concat(arr 1,arr 2)方法は、複数の配列要素を受け入れ、arr 2の要素をarr 1にコピーする.
どのようにして1つの方法を書くかを考えて、伝達された未知の数の複数の配列を1つの配列に結合し、配列の重複したアイテムを除去しますか?
ここではES 5のconcat()方法とappy()方法を使いますが、基本的なfor循環方法はここでは説明しません.
concat(arr 1,arr 2)方法は、複数の配列要素を受け入れ、arr 2の要素をarr 1にコピーする.
var arr1 = ['a', 'b', 'c'];
var arr2 = ['d', 'e', 'f'];
var arr3 = arr1.concat(arr2);
// arr3 is a new array [ "a", "b", "c", "d", "e", "f" ]
apply()メソッドは、関数として呼び出されます.applyメソッドの最初のパラメータは、呼び出された関数のthis値として、applyメソッドの2番目のパラメータ(1つの配列、またはクラスの配列のオブジェクト)は、呼び出されたオブジェクトのargments値として、つまり、配列の各要素は、順次、呼び出された関数の各パラメータとなります.export function concatArray(){
let newArr = Array.prototype.concat.apply([], arguments)//
return Array.from(new Set(newArr))
}
const a1 = concatArray([1,2],[1,2,3]);
console.log('new arr',a1)
//[1,2,3]
const a2 = concatArray([1],[1,2,3],[4,3,6],[2,5,7]);
console.log('new arr',a2)
//[1,2,3,4,6,5,7]
この方法は他人の思想を参考にして転化されたもので、Set()とアラy.from()はES 6の方法であり、詳しくは読者自身でES 6マニュアルを検索してください.