【发布时间】:2022-01-19 06:21:42
【问题描述】:
我想通过 JavaScript 迭代器迭代一个 JSON 对象(数组)。我无法将从迭代器函数获取的数据存储在一个变量中,以便我可以使用该变量进行 DOM 操作。
next.addEventListener('click',nextCV);
function nextCV(){
const a =getCV().then(data=>
data.next().value)
}
function getCV(){
return fetch(url).then(response=>{return response.json()
}).then(data=>{
return iteratorCV(data.results)
})
}
function iteratorCV(data){
console.log('inside iterator')
let nextindex=0;
return {
next: function(){
return nextindex<data.length ? {value: data[nextindex++], done:false} : {done:true};
}
};
}
这里我想在点击事件发生时将下一个数组数据存储到变量“a”中。 请帮忙。
附:我还在学习 JavaScript。
【问题讨论】:
-
你想学习迭代器协议还是只是想让它工作?因为如果你使用生成器会更容易。数组也是迭代器,所以你的 iteratorCV 毫无意义。
-
只需使用
array[Symbol.iterator]()从data.results获取迭代器即可,不需要iteratorCV 函数。 -
您好 jcubic,我正在使用迭代器,因为每次单击我想迭代到下一个数组元素。数组是否具有隐式迭代功能?如果有,请详细说明或分享任何有用的链接。跨度>
-
正如我所评论的,
array[Symbol.iterator]()是显式迭代函数,与 iteratorCV 的输出相同。
标签: javascript dom-events javascript-objects fetch-api