javascript - 在 JavaScript 中对集合中的某些键执行转换

标签 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,但 vanilla JS 也很好。

最佳答案

您可以使用迭代和递归方法来获取所有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; }

关于javascript - 在 JavaScript 中对集合中的某些键执行转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44807833/

相关文章:

javascript - JavaScript 数组的区别?

java - 如何检查一个 ArrayList 是否包含 2 个值?

java - 如何设置 Set<String> 不区分大小写

java - 如何使用 Comparator 接口(interface)减去集合而不是覆盖 equals

dictionary - Clojure:如果键存在,则惯用更新 map 的值

MySQL 错误 : Specified key was too long; max key length is 1000 bytes

javascript - d3.js 动画线条绘制发生在与预期相反的方向

javascript - 当 javascript 尝试解析包含从 C# 发送的列表的对象时,CefSharp 崩溃

javascript - 居中页脚内容

postgresql - 级联复制/插入