迭代es6中的对象并返回新对象

And*_*gan 2 javascript iterator ecmascript-6

使用es6 javascript可以迭代一个对象并返回一个新对象.例如:

const people = {
    'Sally': {
        age: 22,
        sex: 'female',
    },
    'John': {
        age: 64,
        sex: 'male',
    },
    'Sam': {
        age: 12,
        sex: 'female',
    },      
};

const ages = people.someEs6IteratingObjectFunction((index, person) => {
    return { Object.keys(people)[index]: person.age };
});

console.log(ages); // { 'Sally': 22, 'John': 64, 'Sam': 12, }   
Run Code Online (Sandbox Code Playgroud)

Yur*_*kym 7

您可以使用reduce数组原型的方法.它也适用于es5.

const people = {
    'Sally': {
        age: 22,
        sex: 'female',
    },
    'John': {
        age: 64,
        sex: 'male',
    },
    'Sam': {
        age: 12,
        sex: 'female',
    },      
};

let result = Object.keys(people).reduce(function(r, name) {
  return r[name] = people[name].age, r;
}, {});

document.write(['<pre>', JSON.stringify(result, 0, 3), '</pre>'].join(''));
Run Code Online (Sandbox Code Playgroud)

  • 在这种情况下,只需将此表达式分成两部分即可。`r[姓名] = 人[姓名].年龄;返回 r;`。我不知道这个规则:) (2认同)