用于反转键的Lodash方法:对象中的值

时间:2016-02-03 11:09:53

标签: javascript node.js object lodash

无论如何,人们可能会转向以下内容;

{
    "ID": "id"
    "Name": "name"
}

成;

{
    "id": "ID",
    "name": "Name"
}

使用lodash?我特意寻找的东西;

var newObj = _.reverseMap(oldObj);

谢谢:)

1 个答案:

答案 0 :(得分:7)

invert适用于扁平物体,如果你想要它嵌套,你需要这样的东西:

var deepInvert = function(obj) {
    return _.transform(obj, function(res, val, key) {
        if(_.isPlainObject(val)) {
            res[key] = deepInvert(val);
        } else {
            res[val] = key;
        }
    });
};

//

var a = {
    x: 1,
    y: 2,
    nested: {
        a: 8,
        b: 9
    }
};

var b = deepInvert(a);
document.write('<pre>'+JSON.stringify(b,0,3));
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.2.0/lodash.min.js"></script>