如何解决如何在javascript中转换对象内的一组字段并做出反应
我在 #include <boost/optional.hpp>
#include <boost/variant.hpp>
#include <optional>
struct A
{};
struct B
{
B(A) {}
};
void f() {
boost::optional<A> boptA;
boost::optional<B> boptB{boptA};
std::optional<A> soptA;
std::optional<B> soptB{soptA};
{
boost::optional<boost::variant<B>> vB;
vB = boptA; // 1. success
}
{
boost::optional<boost::variant<B,bool>> vB;
vB = boptA; // 2. success
}
{
std::optional<boost::variant<B>> vB;
vB = soptA; // 3. success that compares with #1
}
{
std::optional<boost::variant<B,bool>> vB;
vB = soptA; // 4. compilation error that should have compared with #2
}
}
中有以下对象:
React
循环遍历此对象并将 const userData =
{
id: 30,firstName: "James",lastName: "Anderson",programmingLanguage: "Java,Python",# HERE
LanguageSpoken: "french,German,English",# HERE
Nationality: "french",Hobby: "Developer,Hiking" # HERE
},]
、programmingLanguage
和 LanguageSpoken
三个字段(类型为 Hobby
)转换为 的最佳方法是什么?字符串列表(类型)。
所以转换后应该是这样的。
string
PS:(我知道这很糟糕)但上面的格式是我从后端接收数据的方式,因为我不允许更改,所以我必须处理它。
如果是针对单个字段,我会这样做:
const userData =
{
id: 30,programmingLanguage: ["Java","Python"],# List of strings
LanguageSpoken: ["french","German","English"],# List of strings
Nationality: "french",Hobby: ["Developer","Hiking"] # List of strings
},]
但如上所述,我必须修改 3 个字段。
感谢您的帮助。
解决方法
我会使用 Object.fromEntries
将每个对象映射到一个新对象:
const properties = ['programmingLanguage','LanguageSpoken','Hobby'];
const userData = [
{
id: 30,firstName: "James",lastName: "Anderson",programmingLanguage: "Java,Python",LanguageSpoken: "French,German,English",Nationality: "French",Hobby: "Developer,Hiking"
},];
const output = userData.map(
obj => Object.fromEntries(
Object.entries(obj).map(
([key,val]) => [key,properties.includes(key) ? val.split(',') : val]
)
)
);
console.log(output);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。