如何使用键数组在对象的对象中查找值
How to find a value in object of objects with an array of keys
例如我有一个对象,它本身有对象和数组:
const object =
{
a: {
b: [
0: 'something',
1: {
c: 'the thing that I need',
},
],
},
};
和一个以键为值的数组:
const array =
[
'a', 'b', '1', 'c',
];
如何使用这个数组在对象中导航并给我值?
也许有办法用 ramda
做到这一点?或者只是为了让它看起来更易于阅读。
您可以减少定义通过对象的路径的数组。
您确实在数组中有错误。路径应该是:[ 'a', 'b', '1', 'c' ],因为你需要的东西在 b 数组的第二个元素中,而不是第一个元素中。
const object = {
a: {
b: [
'something',
{ c: 'the thing that I need' }
],
},
};
const path = [ 'a', 'b', '1', 'c' ];
const result = path.reduce(( source, next ) => source[ next ], object );
console.log( result );
Ian Hoffman-Hicks 的精湛 crocks 库有一个功能可以做到这一点
import propPathOr from 'crocks/helpers/propPathOr'
const getC = propPathOr(null, ['a', 'b', '0', 'c'])
getC({ a: { b: [{ c: 'gotcha!' }] } }) === 'gotcha!' // true
这个函数在 Ramda 中被称为 path
。
例如我有一个对象,它本身有对象和数组:
const object =
{
a: {
b: [
0: 'something',
1: {
c: 'the thing that I need',
},
],
},
};
和一个以键为值的数组:
const array =
[
'a', 'b', '1', 'c',
];
如何使用这个数组在对象中导航并给我值?
也许有办法用 ramda
做到这一点?或者只是为了让它看起来更易于阅读。
您可以减少定义通过对象的路径的数组。 您确实在数组中有错误。路径应该是:[ 'a', 'b', '1', 'c' ],因为你需要的东西在 b 数组的第二个元素中,而不是第一个元素中。
const object = {
a: {
b: [
'something',
{ c: 'the thing that I need' }
],
},
};
const path = [ 'a', 'b', '1', 'c' ];
const result = path.reduce(( source, next ) => source[ next ], object );
console.log( result );
Ian Hoffman-Hicks 的精湛 crocks 库有一个功能可以做到这一点
import propPathOr from 'crocks/helpers/propPathOr'
const getC = propPathOr(null, ['a', 'b', '0', 'c'])
getC({ a: { b: [{ c: 'gotcha!' }] } }) === 'gotcha!' // true
这个函数在 Ramda 中被称为 path
。