javascript - 如何创建传递对象和键并返回嵌套对象值的函数
问题描述
我有一个嵌套对象,我如何拥有传递对象和键并取回值的函数?
示例输入
object = {"a1":{"b1":"{"c1":"d1"}"}}
key = a1/b1/c1
object = {"x1":{"y1":"{"z1":"a1"}"}}
key = x1/y1/z1
value = a1
以下是我尝试过的,但它是错误的
var obj, traverse;
obj = {
a1: {
b1: c1,
b1: d1
},
x1: {
y1: z1,
y1: a1
}
};
traverse = function(node, path) {
var pairs;
if (!(pairs = _(node).pairs()).length) {
return [
{
keys: path,
value: node
}
];
} else {
return [].concat.apply([], _(pairs).map(function(kv) {
return traverse(kv[1], path.concat(kv[0]));
}));
}
};
console.log(traverse(obj, []));
解决方案
您可以尝试 lodash _.get,这种访问方式非常棒:
如果找不到路径,您也可以传入默认值。
var object = {"a1": { "b1": { "c1": "d1" }}};
console.log("Result at 'a1.b1.c1': ",_.get(object, 'a1.b1.c1'));
console.log("Result at 'a1.b1.nonexistent key': ",_.get(object, 'a1.b1.nonexistent', "default result"));
var object2 = {"x1":{"y1":{"z1":"a1"}}};
console.log("Result at 'x1.y1.z1': ",_.get(object2, 'x1.y1.z1'));
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.11/lodash.js"></script>
推荐阅读
- permissions - 通过 JSON/REST API 向 Wix 插入数据:WD_PERMISSION_DENIED
- delphi - Delphi,由于 E2029 无法创建类
- python - 结合两个查询,sqlalchemy
- java - CentOS 7 Jenkins 全新安装失败
- python - R-markdown 和 RStudio 中的图形切割
- excel - Apache POI:如何将单元格公式设置为另一个工作表的名称?
- javascript - 如何在另一个路由器页面 VUEJS、VUEX 中访问我的数组状态
- python - 无法在新的 docker 容器上安装 psycopg2-binary
- javascript - 从列表中过滤后如何删除元素的引用
- php - 显示挂钩 PRESTASHOP 的问题