[英]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.