gpt4 book ai didi

Javascript foreach 和 for 循环总是仅在执行 array.push 时循环一次

转载 作者:行者123 更新时间:2023-11-28 17:03:53 25 4
gpt4 key购买 nike

Javascript代码仅在执行array.push时循环一次,当放入console.log(odgovor)时它会显示一切正常

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 中的每个元素都相同

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);
}
});
}

最佳答案

在这两个代码片段中,您仅在内存中创建了一个对象,您将对其进行多次变异 - 相反,请在循环内创建每个对象:

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,这是一种简洁、实用且可读的方法,可将一个数组的每个元素转换为另一个数组:

getTacni() {
this.storageService.getQuestions().then(items => {
const odgovor = items.map(({ id, tacan }) => ({ id, answer: tacan }));
});
}

关于Javascript foreach 和 for 循环总是仅在执行 array.push 时循环一次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56486521/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com