Javascript array.push 似乎在 for 循环中不起作用
Javascript array.push does not seem to work in a for loop
我在 nodeJS 中遇到了非常奇怪的行为。我正在尝试初始化一个空数组,然后在 for 循环中填充该数组。请参阅下面的简化代码。
let arr = []
for (let i = 0; i < 20; i++) {
console.log(arr)
arr.push(`hello`)
}
console.log(arr)
这在循环的每个实例和之后只输出一个空数组。
[]
[]
[]
[]
...
[]
我一辈子都弄不明白这是为什么。我假设它与作用域有关,但是当我对它进行直接分配时,该数组仍然可以在循环内访问。任何帮助将不胜感激!
编辑:这是我苦苦挣扎的完整代码。 arr.push 似乎没有将新网址推送到 arr。谢谢
const getRandImgs = async (ct) => {
console.log('At the top of getRandImgs')
try {
let arr = []
if (ct > 30) {
arr = await getRandImgs(30)
console.log(arr)
ct -= 30
}
const config = {
params: {
collections: '483251',
count: ct
},
headers: {
Authorization: 'Client-ID XXXXXXX'
}
}
const res = await axios.get('https://api.unsplash.com/photos/random', config)
for (const d of res.data) {
console.log(d.urls.full)
console.log(arr)
arr.push[d.urls.full]
console.log(arr)
}
return arr
} catch (e) {
console.log(e)
}
}
你的线路
arr.push[d.urls.full]
应该是
arr.push(d.urls.full)
我在 nodeJS 中遇到了非常奇怪的行为。我正在尝试初始化一个空数组,然后在 for 循环中填充该数组。请参阅下面的简化代码。
let arr = []
for (let i = 0; i < 20; i++) {
console.log(arr)
arr.push(`hello`)
}
console.log(arr)
这在循环的每个实例和之后只输出一个空数组。
[]
[]
[]
[]
...
[]
我一辈子都弄不明白这是为什么。我假设它与作用域有关,但是当我对它进行直接分配时,该数组仍然可以在循环内访问。任何帮助将不胜感激!
编辑:这是我苦苦挣扎的完整代码。 arr.push 似乎没有将新网址推送到 arr。谢谢
const getRandImgs = async (ct) => {
console.log('At the top of getRandImgs')
try {
let arr = []
if (ct > 30) {
arr = await getRandImgs(30)
console.log(arr)
ct -= 30
}
const config = {
params: {
collections: '483251',
count: ct
},
headers: {
Authorization: 'Client-ID XXXXXXX'
}
}
const res = await axios.get('https://api.unsplash.com/photos/random', config)
for (const d of res.data) {
console.log(d.urls.full)
console.log(arr)
arr.push[d.urls.full]
console.log(arr)
}
return arr
} catch (e) {
console.log(e)
}
}
你的线路
arr.push[d.urls.full]
应该是
arr.push(d.urls.full)