使用JavaScript对集合中的某些键执行转换

时间:2017-06-28 16:19:16

标签: javascript collections key lodash

我们说我有这样的集合:

var myCollection = [
    {
        name: 'Foo',
        age: 35
    },{
        name: 'Bar',
        age: 32
    },{
        secondRow: [
            {
                name: 'FooFoo',
                age: 21
            },          {
                name: 'BarBar',
                age: 25
            }
        ]
    }
];

我想迭代这个集合(具有任意深度),并使用键age为每个值添加10年。

我该怎么做?

如果有必要,我很乐意使用lodash,但香草JS也很好。

1 个答案:

答案 0 :(得分:2)

您可以使用迭代和递归方法获取所有age属性以进行更新。



function add10(object) {
    Object.keys(object).forEach(function (key) {
        if (object[key] && typeof object[key] === 'object') {
            return add10(object[key]);
        }
        if (key === 'age') {
            object.age += 10;
        }
    });
}

var myCollection = [{ name: 'Foo', age: 35 }, { name: 'Bar', age: 32 }, { secondRow: [{ name: 'FooFoo', age: 21 }, { name: 'BarBar', age: 25 }] }];

add10(myCollection);
console.log(myCollection);

.as-console-wrapper { max-height: 100% !important; top: 0; }