簡體   English   中英

無法將對象推送到數組

[英]Can't push object to array

我有這個簡單的代碼

let pathFinder = (entranceX, entranceY, grid) => {
            let distanceFromTop = entranceX;
            let distanceFromLeft = entranceY;

            let location = {
                distanceFromTop: distanceFromTop,
                distanceFromLeft: distanceFromLeft,
                path: [],
                status: 'Start'
            }


            console.log('start', location)

            let queue = [];
            queue.push(location);
            console.log('queue', queue)
}

而且我確保“位置”不是空的,它在控制台中顯示為:

“開始{distanceFromTop:1,distanceFromLeft:0,路徑:Array(0),狀態:“開始”}“

但是當我想將其添加到隊列中時,我得到的結果看起來並不像一個空數組,但長度為0

“隊列[{…}]長度:0”

我缺少明顯的東西嗎? 試圖通過queue [location]添加它,但是也沒有用

您應該檢查let和var之間的區別

var pathFinder = (entranceX, entranceY, grid) => {
        var distanceFromTop = entranceX;
        var distanceFromLeft = entranceY;

        let location = {
            distanceFromTop: distanceFromTop,
            distanceFromLeft: distanceFromLeft,
            path: [],
            status: 'Start'
        }


        console.log('start', location)

        var queue = [];
        queue.push(location);
        console.log('queue', queue)
}

let只能在聲明了它的作用域塊中使用,在整個聲明函數中var都位於var中,或者全局聲明。 將前三個變量(函數和兩個距離以及隊列)更改為var應該可以解決此問題。 如果不改變它們,那肯定會的。

看起來像是推送正在工作,但是在記錄整個對象時未顯示數組

queue.push(location);
console.log("queue", queue[0]);

隊列{distanceFromTop:1,distanceFromLeft:1,路徑:Array(0),狀態:“開始”}

如果您將控制台更改為

console.log("queue", Array.from(queue));

您也可以看到數組的內容。

暫無
暫無

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

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