2016-12-02 13 views
1

JavaScript配列には8つの要素があり、いくつかの要素は繰り返しています。私は同じ要素のための別々の配列を作成したいと思います。javascriptで繰り返し要素の新しい配列を作成する

例: 元の配列は、[1,1,1,3,3,1,2,2] 得られた配列は、[1,1,1,1]になり、[3,3]、あなたは結果の配列は、それらが表す値をキーとオブジェクトのプロパティになりたいと仮定しましょう

var array=[1,1,1,3,3,1,2,2]; 
 

 

 

 
var createNewArrays=function(array){ 
 
    for (var i = 0; i < array.length; i++) { 
 
     for (var j = 0; j < array.length; j++) { 
 

 
     } 
 
    } 
 
    
 
};

答えて

1

サブアラへの参照としてハッシュテーブルを使用できますコレクションのys。

var array = [1, 1, 1, 3, 3, 1, 2, 2], 
 
    result = []; 
 

 
array.forEach(function (a) { 
 
    a in this || result.push(this[a] = []); 
 
    this[a].push(a); 
 
}, Object.create(null)); 
 

 
console.log(result);

0

:[2,2]

を私はこれと同様の機能をしたいです。あなただけの配列をループ、あなたが行くように作成するか、またはオブジェクトのプロパティの配列に追加:

var array=[1,1,1,3,3,1,2,2]; 
 
var result = {}; 
 
array.forEach(function(entry) { 
 
    var subarray = result[entry]; 
 
    if (!subarray) { 
 
    subarray = result[entry] = []; 
 
    } 
 
    subarray.push(entry); 
 
}); 
 
console.log(result);
:、ここで明確にバージョンが

var array=[1,1,1,3,3,1,2,2]; 
 
var result = {}; 
 
array.forEach(function(entry) { 
 
    (result[entry] = result[entry] || []).push(entry); 
 
}); 
 
console.log(result);

ビット濃密だのです

1
var arr = [1,1,1,3,3,1,2,2]; 
 

 
var hash = Object.create(null); 
 

 
var result = arr.reduce(function(r, n) { 
 
    if(!hash[n]) { 
 
    hash[n] = []; 
 
    r.push(hash[n]); 
 
    } 
 
    
 
    hash[n].push(n); 
 
    
 
    return r; 
 
}, []); 
 

 
console.log(result);

そしてMapを使用していますES6ソリューション、およびspread

const arr = [1,1,1,3,3,1,2,2]; 
 

 
const result = [...arr.reduce((r, n) => 
 
    r.set(n, (r.get(n) || []).concat(n)), 
 
new Map()).values()]; 
 

 
console.log(result);

関連する問題