簡體   English   中英

將數組推入二維數組時出現問題

[英]Having Issue On Pushing Array Into Two Dimension Array

您能否看一下這段代碼,讓我知道為什么storage.push(players)而不是將新的數組/ players器集添加到storage中,而是將它們與先前添加的數組合並?

從技術上講,我在這里所期望的是得到這樣的東西

[
  [2,52,35,16,18,46],
  [18,44,66,25,78,26]
]

但是我現在得到的只是存儲中的一個數組,例如

[
  [2,52,35,16,18,46,18,44,66,25,78,26]
]

 var storage = []; var players = []; function createplayers(arr) { for (let i = 0; i < 8; i++) { let a = true, n; while (a) { n = Math.floor(Math.random() * 100) + 1; a = arr.includes(n); } arr.push(n); } } var x = 3; var interval = 1000; for (var i = 0; i < x; i++) { setTimeout(function() { createplayers(players); storage.push(players) console.log(players) console.log(storage) }, i * interval) }
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

你一直只有一個players陣列。 將數組創建移動到createplayers()

 var storage = []; function createplayers() { var arr = []; for (let i = 0; i < 8; i++) { let a = true, n; while (a) { n = Math.floor(Math.random() * 100) + 1; a = arr.includes(n); } arr.push(n); } return arr; } var x = 3; var interval = 1000; for (var i = 0; i < x; i++) { setTimeout(function() { var players = createplayers(); storage.push(players) console.log(players) console.log(storage) }, i * interval) }
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

這個問題與jQuery無關

每次添加到存儲時,您都必須清除播放器陣列。
這是解決方案

var storage = [];
var players = [];


function createplayers(arr) {
  for (let i = 0; i < 8; i++) {
    let a = true,
      n;
    while (a) {
      n = Math.floor(Math.random() * 100) + 1;
      a = arr.includes(n);
    }
    arr.push(n);
  }
}

var x = 3;
var interval = 1000;
for (var i = 0; i < x; i++) {
  setTimeout(function() {
    createplayers(players);
    storage.push(players)
    console.log(players)

    //Notice this line
    players=[];
    console.log(storage)
  }, i * interval)
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM