簡體   English   中英

將對象附加到 Javascript 列表時出現意外行為

[英]Unexpected behavior when appending objects to Javascript lists

使用最新的谷歌瀏覽器,我正在運行以下代碼:

(data) => {  //data is a list of json tuples that look like [{x: __, y: ___}, ...]
    var rand = () => Math.random() * data.length;

    const placeholder = [...Array(10).keys()].map(_ => {
      const idx = Math.floor(rand());
      return data[idx];
    });
};

我希望這個函數做的是對輸入數據的 10 個子集進行采樣並以相同的格式返回它。 在 map 函數中的每次迭代中,我都會打印出對象,並且它看起來像預期的那樣(見圖)。 奇怪的是,然后我在“占位符”數組中看到的結果是每個 Release_Date 鍵與占位符 [0]['Release_Date'] 的值相同,而它們每個都應該是唯一值。 Production_Budget 看起來不錯。 我不知道這里發生了什么,我很難過。 有沒有人知道發生了什么?

在此處輸入圖片說明

你的函數永遠不會返回任何東西。

 const getSample = (data) => { //data is a list of json tuples that look like [{x: __, y: ___}, ...] const rand = () => Math.random() * data.length; const placeholder = [...Array(10).keys()].map(_ => { const idx = Math.floor(rand()); return data[idx]; }); /* | | | | | | | */ /* VVVVVVV */ return placeholder; }; const data = Array(30).fill(0).map(() => ({ x: Math.random.between(0, 600), y: Math.random.between(0, 600), })); const sample = getSample(data); console.log(sample);
 <script src="https://cdn.jsdelivr.net/gh/olian04/better-random/src/index.js"></script>

如果需要,您還可以大大簡化您的代碼。 例如:

 const getSample = (data, sampleSize=10) => Array(sampleSize).fill(0) .map(() => Math.random.select(data)); const data = Array(30).fill(0).map(() => ({ x: Math.random.between(0, 600), y: Math.random.between(0, 600), })); const sample = getSample(data); console.log(sample);
 <script src="https://cdn.jsdelivr.net/gh/olian04/better-random/src/index.js"></script>

暫無
暫無

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

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