下記のソースは、受け取った配列から重複する値を排除する関数です。
重複する値を排除する処理は。最初のfor文で行っていると思うのですが、これって具体的にどうやって排除しているのでしょうか。
javascript
1var unique = function(array) { 2 var obj ={}; 3 var res =[]; 4 console.log("a",array); 5//この段階で同じ数字を除去しているようだ 6for(var i=0, len =array.length;i < len;i++){ 7 obj[array[i]]= ""; 8 console.log(i,obj); 9} 10for(var k in obj) {// 11 res.push(k); 12 console.log(k,res) 13} 14return res; 15}; 16var aaa=unique([1,2,5,5,1,3,1,2,4,3,"a"]); 17console.log(aaa);
ブレイクスルーjavascript92p
0 {1: ""} (index):23 1 {1: "", 2: ""} (index):23 2 {1: "", 2: "", 5: ""} (index):23 3 {1: "", 2: "", 5: ""} (index):23 4 {1: "", 2: "", 5: ""} (index):23 5 {1: "", 2: "", 3: "", 5: ""} (index):23 6 {1: "", 2: "", 3: "", 5: ""} (index):23 7 {1: "", 2: "", 3: "", 5: ""} (index):23 8 {1: "", 2: "", 3: "", 4: "", 5: ""} (index):23 9 {1: "", 2: "", 3: "", 4: "", 5: ""} (index):23 10 {1: "", 2: "", 3: "", 4: "", 5: "", a: ""}
コンソール画面をみても何故、このfor文で排除できるのかいまいちわかりません。どうなっているのでしょうか。
ご回答ありがとうございます。
もう一点、質問させてください。
(index):23 4 {1: "", 2: "", 5: ""}
(index):23 5 {1: "", 2: "", 3: "", 5: ""}
上記のコンソール画面をみるとあとから挿入された3が5の前に来ています。恐らく前に挿入された数値より低いからだと思うのですが、どこで後から挿入された数値(3)を先に挿入された数値(5)より先に置くという処理が行われているのでしょうか。
回答2件
あなたの回答
tips
プレビュー