Javascript foreach和for循环仅在执行array.push时总是循环一次 [英] Javascript foreach and for loop always loop once only when do array.push
本文介绍了Javascript foreach和for循环仅在执行array.push时总是循环一次的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
仅当执行array.push时,将console.log(odgovor)放到Javascript代码中一次,它显示一切正常
Javascript code loop once only when do array.push when put console.log(odgovor) it display everything good
getTacni() {
this.storageService.getQuestions().then(items => {
let odgovori: { id: number; answer: number }[] = [];
let odgovor: { id: number; answer: number } = { id: null, answer: null };
for (let i of items) {
odgovor.id = i.id;
odgovor.answer = i.tacan;
console.log(odgovor);
}
});
}
失败odgovori中的每个元素都是相同的
FAIL every element in odgovori is same
getTacni() {
this.storageService.getQuestions().then(items => {
let odgovori: { id: number; answer: number }[] = [];
let odgovor: { id: number; answer: number } = { id: null, answer: null };
for (let i of items) {
odgovor.id = i.id;
odgovor.answer = i.tacan;
odgovori.push(odgovor);
}
});
}
推荐答案
在这两个代码段中,您仅在内存中创建了一个对象,然后继续进行多次更改-在循环中创建每个对象:
In both snippets, you've only created one object in memory, which you proceed to mutate many times - create each object inside the loop instead:
getTacni() {
this.storageService.getQuestions().then(items => {
const odgovori: { id: number; answer: number }[] = [];
for (let i of items) {
const odgovor: { id: number; answer: number } = { id: i.id, answer: i.tacan };
odgovori.push(odgovor);
}
});
}
您还可以考虑使用.map
,这是一种简洁,实用且易读的方式,可将一个数组的每个元素转换为另一个:
You also might consider using .map
, which is a concise, functional, and readable way to transform every element of one array into another:
getTacni() {
this.storageService.getQuestions().then(items => {
const odgovor = items.map(({ id, tacan }) => ({ id, answer: tacan }));
});
}
这篇关于Javascript foreach和for循环仅在执行array.push时总是循环一次的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文