javascript - 嵌套对象上的 Join(';')
问题描述
我正在尝试将对象中的所有值连接到分号分隔,如果对象只是一个级别,它可以正常工作:
obj = {
name: "one"
additionalInfo: "hello"
...
};
Object.values(obj).join(';')
结果:一个;你好
但是如果对象是嵌套的:
obj = {
name: "one"
additionalInfo: {
description: "hello",
...
}
};
Object.values(obj).join(';')
结果:一;[对象对象]
除了 name 之外的其余值当然是 [object Object]。我如何也加入 2 级值?
我想要的结果是:
one;hello
解决方案
要达到预期的结果,请使用以下将对象更改为字符串的选项并使用:和}查找值
- 使用JSON.stringify将obj 更改为字符串 并用“ : ”分割
- 获取“ : ”和“ , ”之间的单词以及“ : ”和“ } ”之间的结束词
- 使用 repalce 删除不需要的字符
工作代码示例并添加了更多测试对象
obj = {
name: "one",
additionalInfo: {
description: "hello",
},
test: "abc",
grandparent: {
parent: {
child: "child"
}
}
};
function concatObj(obj){
let str = JSON.stringify(obj).split(":");
return str.map(v => v.substr(0, v.indexOf(",")) || v.substr(0, v.indexOf("}"))).filter(Boolean).join(":").replace(/"|}|{/g,'')
}
console.log(concatObj(obj))
codepen - https://codepen.io/nagasai/pen/pXpwdM?editors=1010
推荐阅读
- c++ - 创建不带通配符的 gtest 过滤器
- html - 悬停/鼠标悬停html时将视频源更改为图像源
- latex - 如何在 TikZ/er 图片中省略关系的“钻石”符号并控制文本沿关系路径的位置?
- r - R tidymodels 配方接近数字属性的零方差过滤器
- c# - C# 检查列表
为空 - stripe-payments - 如果帐户经过验证,您将无法通过 API 更改 `company[tax_id]`。条纹
- javascript - 在我的代码中需要 mongodb api mongoose 后,Visual Studio 代码中的错误
- optimization - Solidity gas 费用的最佳内存实践和优化
- mysql - Sequelize N:M ParentModel.setChilds(ChildArray) 不是函数(魔术方法?)
- c++ - std::cin 函数未按预期运行?