如何将键路径数组返回嵌套的javascript对象中的值?

JT·霍克

我正在尝试转换一个可能具有不同嵌套级别的对象:

const obj = {
    some: {
        thing: {
            good: 'yo'
        },
        one: 'else'
    },
    something: {
        bad: 'oy'
    },
    somethingtasty: 'mmm'
}

放入包含值的原始路径和值的对象数组:

const arr = [{
        path: 'some.thing.good',
        value: 'yo'
    }, {
        path: 'some.one',
        value: 'else
    }, {
        path: 'something.bad',
        value: 'oy'
    }, {
        path: 'somethingtasty',
        value: 'mmm'
    }]

对于类似的问题,我发现了一个有用的答案,该问题涉及不同嵌套的对象:

https://stackoverflow.com/a/2631198

但这不能解决

  • 答:如何处理可变的嵌套深度
  • b:如何处理可变键

我还尝试查看lodash是否具有一个或多个可以帮助像这样的方法:

https://github.com/node4good/lodash-contrib/blob/master/docs/_.object.selectors.js.md#getpath

要么:

https://lodash.com/docs/4.17.11#flatMapDeep

但是,如果我不知道需要获取的值的路径,这将无济于事。

javascript中是否有办法递归遍历对象并将其键和值保存在数组中?

内纳德·弗拉卡(Nenad Vracar)

您可以使用reduce方法来创建递归函数。

const obj = {"some":{"thing":{"good":"yo"},"one":"else"},"something":{"bad":"oy"},"somethingtasty":"mmm"}

function paths(obj, prev = "") {
  return Object.keys(obj).reduce((r, e) => {
    const path = prev + (prev ? '.' + e : e);
    const value = obj[e];

    if (typeof value == 'object') {
      r.push(...paths(value, path))
    } else {
      r.push({path,value})
    }

    return r
  }, [])
}

const result = paths(obj)
console.log(result)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

JavaScript如何将对象数组中的值转换为数组,以便每个子数组将键中的值分组?

如何将值设置为Javascript对象中的属性,该属性由键数组标识

如何将数组插入到嵌套的 JavaScript 对象中

如何基于嵌套数组中的值返回对象?(Javascript)

如果特定键的值相同,如何将值更新为嵌套的对象数组?

如何将方括号对象键从URL位置转换为Javascript中的嵌套对象?

如何从javascript中的对象值返回键?

Typescript或JavaScript将嵌套的对象数组转换为键,值对

如何将 Javascript 对象转换为具有键和值数组的对象?

如何搜索嵌套的 javascript 对象并根据值返回键

返回与深度嵌套的 Javascript 对象中的搜索键对应的值

Javascript按数组路径更新嵌套对象中的值

如何将键数组和值数组合并到一个对象中?

JavaScript-使用键数组从嵌套对象中检索值

如何将javascript对象转置为键/值数组

将嵌套对象 JavaScript 中的键的值相乘

如何将值与嵌套数组中的其他对象进行比较?

javascript按对象键过滤并返回嵌套对象键的值

如何将具有相似键/值的数组中的对象转换为该数组中的数组

如何从键和值中获取javascript对象的路径

如何将键/值对添加到JavaScript对象?

如何将嵌套的json转换为Javascript中的对象数组?

如何通过javascript中的值找到嵌套对象的键?

如何遍历嵌套对象并返回数组中的值?

Javascript:如何将变量的值设置为关联数组中的键?

如何将每个对象插入到键对值中

如何将数组中的值映射到对象数组?

如何将嵌套数组中的元素转换为具有名称和值属性的对象数组?

如何将嵌套的json键/值对展平为单个值数组?