javascript - 生成键、值和完成的方法,格式为 {value : . 。 , key : .。 ,完成 : . 。}

标签 javascript ecmascript-6

.next() 方法返回一个具有两个属性的对象,即 value 和 did。是否有一种方法可以返回键和值并完成?代码如下:

const james = {
    name: 'James',
    height: `5'10"`,
    weight: 185,
    [Symbol.iterator]:function*(){   
       for(let key of Object.keys(this)) {
          yield  this[key]; 
       }
    }
};

const iterator = james[Symbol.iterator]();

console.log(iterator.next()); 
console.log(iterator.next()); 
console.log(iterator.next());

这段代码的输出是:

{ value: 'James', done: false }
{ value: '5\'10"', done: false }
{ value: 185, done: false }

预期输出:

{ value: 'James', key: 'name', done: false }
{ value: '5\'10"', key: 'height', done: false }
{ value: 185, key: 'weight', done: false }

最佳答案

您在生成器中最接近的结果就是自己生成对象

yield {key: key, value: this[key]};

const james = {
  name: 'James',
  height: `5'10"`,
  weight: 185,
  [Symbol.iterator]: function*() {
    for (let key of Object.keys(this)) {
      yield {
        key: key,
        value: this[key]
      };
    }
  }
};

const iterator = james[Symbol.iterator]();

console.log(iterator.next());
console.log(iterator.next());
console.log(iterator.next());

关于javascript - 生成键、值和完成的方法,格式为 {value : . 。 , key : .。 ,完成 : . 。},我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47740526/

相关文章:

javascript - ES6 工厂模式 这是未定义的

javascript - 如何在 Angular 的父 Controller 中访问子 Controller 范围?

javascript - 如何使用确认警报并返回 AJAX promise ?

javascript - svg 圆形路径动画

javascript - 为什么以及何时我们在 JavaScript 中使用对象解构?

javascript - 如何在reactjs中以不可变的方式更新嵌套数组值

javascript - Angular 2从父组件更新子组件的类列表

javascript - 遍历对象文字值

javascript - 如何根据表中某一列中的值隐藏表行

JavaScript ES6 加载文件机制