我試圖使一個函數,它的陣列,並創建一個對陣列 的例如陣列[1,2,3,4]
一對將是:創建從陣列得到圓形陣列的一對陣列
pair = [[1, 2], [1, 3], [1, 4], [2, 3], [2, 4], [3, 4]] ;
而對將是:
pairs = [[[1,2],[1,3]], [[1,2],[1,4]], [[1,2],[2,3]] .... [[2,4],[3,4] ] ;
到目前爲止,我的功能看起來是這樣的:
function makePairs(arr) {
var l = arr.length -1 ,
pair = [];
for(var i=0; i < l ; i++) {
for(var j=i+1; j <= l ; j++) {
pair.push([arr[i],arr[j]]) ;
}
}
// i get the desired pair by the above nested for loop...
// console.log(pair) ;
// i try to do the same nested for loop with the pair array..
// but i get [circular object Array];
var k = pair.length -1,
pairs = [] ;
for(var m=0; m < k ; m++) {
for(var n=m+1; n <= k ; n++) {
pairs.push([pair[m],pair[n]]) ;
}
}
return pairs;
}
console.log( makePairs([1,2,3,4]));
所以pair
給了我想要的對,但是當我做 for
與pair
陣列相同的嵌套類型,我得到[circular object Array]
。我認爲 嵌套for循環也將在pairs
工作,但它不。 我讀了循環引用形成一個javascript對象和導致內存泄漏的本地對象,但我不知道這是否發生在這裏。請幫忙。
您的代碼在FF中運行時沒有錯誤。 –
它在Chrome中也運行良好。並且在IE中運行正常,除了IE在日誌記錄時展平陣列的事實。 –
@PsychHalf請將您的輸出作爲對問題的編輯發佈,而不是讓我們看看鏈接上的附加廣告。你在哪裏運行你的代碼,你會得到圓形對象引用? –