lodash - 遍历对象并将子节点转换/附加为数组

时间:2018-04-03 16:04:55

标签: javascript lodash

我正在尝试使用lodash找到最佳方法来遍历(深度遍历)一个对象,并将遇到的任何子对象转换为array并附加它。

鉴于此对象:

   let testObj = {
    'name': 'testdata',
    'active': false,
    'nestedData': {
        0: {
            0: { 'name': '1', 'value': 1 },
            1: { 'name': '2', 'value': 1 },
            2: { 'name': '3', 'value': 1 },
            3: { 'name': '4', 'value': 1 },
        },
        1: {
            0: { 'name': '5', 'value': 1 },
            1: { 'name': '6', 'value': 1 },
            2: { 'name': '7', 'value': 1 },
            3: { 'name': '8', 'value': 1 },
        },
    },
    'moreData': {
        '0': { 'name': 'test1', 'value': 1 },
        '1': { 'name': 'test2', 'value': 2 },
        '2': { 'name': 'test3', 'value': 3 },
        '3': { 'name': 'test4', 'value': 4 },
    },
    moreData2: {
        '0': {
            'name': 'test1',
            'arr': ['string1', 'string2', 'string3'],
            'value': false,
        },
        '1': {
            'name': 'test2',
            'arr': ['string1', 'string2', 'string3'],
            'value': true,
        }
    }
}

将子项作为数组附加到对象的最佳方法是什么,如下所示:

   let testObjResult = {
    'name': 'testdata',
    'active': false,
    'nestedData': {
        0: {
            0: { 'name': '1', 'value': 1 },
            1: { 'name': '2', 'value': 1 },
            2: { 'name': '3', 'value': 1 },
            3: { 'name': '4', 'value': 1 },
        },
        1: {
            0: { 'name': '5', 'value': 1 },
            1: { 'name': '6', 'value': 1 },
            2: { 'name': '7', 'value': 1 },
            3: { 'name': '8', 'value': 1 },
        },
    },
    'nestedDataArray': [
        [
            { 'name': '1', 'value': 1 },
            { 'name': '2', 'value': 1 },
            { 'name': '3', 'value': 1 },
            { 'name': '4', 'value': 1 },
        ],
        [
            { 'name': '5', 'value': 1 },
            { 'name': '6', 'value': 1 },
            { 'name': '7', 'value': 1 },
            { 'name': '8', 'value': 1 },
        ],
    ],
    'moreData': {
        '0': { 'name': 'test1', 'value': 1 },
        '1': { 'name': 'test2', 'value': 2 },
        '2': { 'name': 'test3', 'value': 3 },
        '3': { 'name': 'test4', 'value': 4 },
    },
    'moreDataArray': [
        { key: '0', 'name': 'test1', 'value': 1 },
        { key: '1', 'name': 'test2', 'value': 2 },
        { key: '2', 'name': 'test3', 'value': 3 },
        { key: '3', 'name': 'test4', 'value': 4 },
    ],
    moreData2: {
        '0': {
            'name': 'test1',
            'arr': ['string1', 'string2', 'string3'],
            'value': false,
        },
        '1': {
            'name': 'test2',
            'arr': ['string1', 'string2', 'string3'],
            'value': true,
        }
    },
    moreData2Array: [
        {
            'key': '0',
            'name': 'test1',
            'arr': ['string1', 'string2', 'string3'],
            'value': false,
        },
        {
            'key': '1',
            'name': 'test2',
            'arr': ['string1', 'string2', 'string3'],
            'value': true,
        }
    ]
}

新数组名称/键与原始对象相同,但附加“数组”。如上所述转换为数组时还可以选择保留对象键。

我尝试使用_.mapValues递归调用_.mapKeys _.toArray但不起作用。也许以某种方式使用_.transform?任何指导将不胜感激。

0 个答案:

没有答案