动态过滤嵌套javascript对象数组中的数据

时间:2020-02-06 12:19:51

标签: javascript arrays

我有一个动态数组var arr = ["key1","key2","key3"] 我想用该数组过滤对象数组,例如

var obj = [{"key1":{"key2":{"key3":5}}},{"key1":{"key2":{"key3":7}}},{"key1":{"key2":{"key3":8}}}] 

“ key3”等于5。如何使用香草javascript实现此功能?

1 个答案:

答案 0 :(得分:1)

您可以使用对象减少键,然后返回要检查的值。

var getValue = (keys, object) => keys.reduce((o, k) => o[k], object),
    keys = ["key1", "key2", "key3"],
    array = [{ key1: { key2: { key3: 5 } } }, { key1: { key2: { key3: 7 } } }, { key1: { key2: { key3: 8 } } }],
    result = array.filter(o => getValue(keys, o) === 5);

console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }

相关问题