迭代关联对象js
iteration associated object js
我想在对象中使用 Symbol.iterator
来迭代关联对象
我需要return循环中的所有键和所有值
这是我的输出:
let price = {
money:2000,
edit_photo:{
yes:100,
no:0
},
photo_type:{
personal:300,
sport:400,
fashion:500,
commercial:600
},
[Symbol.iterator](){
let items = Object.keys(this);
let step = 0;
return{
next(){
let object = {
done: step >= items.length,
value: items[step]
}
step++;
return object;
}
}
}
}
for (let item of price) {
console.log(item)
}
我无法滚动所有值
您 Symbol.iterator
的格式不正确。 Symbol.iterator
在技术上是 generator
而不是迭代器。 generator
函数需要用 *
.
标记
const someObj = {
*[Symbol.iterator]() {
yield 'a';
yield 'b';
}
}
这样你的对象就知道将它实际用作 generator
函数。
现在我们使用了正确类型的函数,我们必须 return 正确类型的值。嗯,yield
正确的值类型。
由于您正在寻找 return 每个对象项的 key
和 value
,我们正在 yield
ing 的对象可能如下所示:
yield {
done: false,
key: items[step],
value: this[items[step]]
}
为了确保我们生成对象的每个项目,我们将其放在 while 循环中。
while (steps < items.length) {
yield { /* ... */ };
step++;
}
一旦 while
循环退出,我们就 yield 我们的最终对象。
yield {
done: true,
value: this,
};
基于您的示例的完整代码如下。引用我的来源:MDN here.
let price = {
money:2000,
edit_photo:{
yes:100,
no:0
},
photo_type:{
personal:300,
sport:400,
fashion:500,
commercial:600
},
*[Symbol.iterator](){
let items = Object.keys(this);
let step = 0;
while (step < items.length) {
yield {
done: false,
key: items[step],
value: this[items[step]]
};
step++;
}
yield {
done: true,
value: this,
}
}
}
for (let item of price) {
console.log(item);
}
我想在对象中使用 Symbol.iterator
来迭代关联对象
我需要return循环中的所有键和所有值
这是我的输出:
let price = {
money:2000,
edit_photo:{
yes:100,
no:0
},
photo_type:{
personal:300,
sport:400,
fashion:500,
commercial:600
},
[Symbol.iterator](){
let items = Object.keys(this);
let step = 0;
return{
next(){
let object = {
done: step >= items.length,
value: items[step]
}
step++;
return object;
}
}
}
}
for (let item of price) {
console.log(item)
}
我无法滚动所有值
您 Symbol.iterator
的格式不正确。 Symbol.iterator
在技术上是 generator
而不是迭代器。 generator
函数需要用 *
.
const someObj = {
*[Symbol.iterator]() {
yield 'a';
yield 'b';
}
}
这样你的对象就知道将它实际用作 generator
函数。
现在我们使用了正确类型的函数,我们必须 return 正确类型的值。嗯,yield
正确的值类型。
由于您正在寻找 return 每个对象项的 key
和 value
,我们正在 yield
ing 的对象可能如下所示:
yield {
done: false,
key: items[step],
value: this[items[step]]
}
为了确保我们生成对象的每个项目,我们将其放在 while 循环中。
while (steps < items.length) {
yield { /* ... */ };
step++;
}
一旦 while
循环退出,我们就 yield 我们的最终对象。
yield {
done: true,
value: this,
};
基于您的示例的完整代码如下。引用我的来源:MDN here.
let price = {
money:2000,
edit_photo:{
yes:100,
no:0
},
photo_type:{
personal:300,
sport:400,
fashion:500,
commercial:600
},
*[Symbol.iterator](){
let items = Object.keys(this);
let step = 0;
while (step < items.length) {
yield {
done: false,
key: items[step],
value: this[items[step]]
};
step++;
}
yield {
done: true,
value: this,
}
}
}
for (let item of price) {
console.log(item);
}