这是源代码:
filenames = (f.name for f in os.scandir() if not f.name.startswith('.'))
第一次调用const james = {
name: 'James',
height: `5'10"`,
weight: 185,
[Symbol.iterator]:function*(){
yield Object.keys(this) ;
}
};
const iterator = james[Symbol.iterator]();
//
console.log(iterator.next().value); // 'James'
console.log(iterator.next().value); // `5'10`
console.log(iterator.next().value); // 185
应该打印
iterator.next().value
但正在打印{"value":"James","key":"name","done":false}
。怎么解决这个?
答案 0 :(得分:4)
您[code]
$dataset = new SimpleXMLElement($html);
foreach($dataset->item as $list) {
$wpdb->query($wpdb->prepare("INSERT INTO table (`id`,`number`,`string`) VALUES (%d,%d,%s) ", $list->id, $list->number, $list->string ) ) ;
}
}
[/code]
同时拥有所有密钥。意味着您的第一个yield
完成所有工作。您所需要的只是按顺序迭代键和next
。
yield
答案 1 :(得分:0)
实际上,这将是您正在寻找的解决方案,它会输出您需要输出的内容。
const james = {
name: 'James',
height: `5'10"`,
weight: 185,
[Symbol.iterator]: function() {
let keys = Object.keys(this), index = 0;
return {
next: () => {
return {
key: keys[index], value: this[keys[index]], done: ++index >= keys.length
};
}
}
}
}
const iterator = james[Symbol.iterator]();
console.log(iterator.next().value);
console.log(iterator.next().value);
console.log(iterator.next().value);