Joh*_*n D 0 javascript algorithm data-structures reactjs react-native
我有以下对象React:
const userData =
{
id: 30,
firstName: "James",
lastName: "Anderson",
programmingLanguage: "Java, Python", # HERE
LanguageSpoken: "French, German, English", # HERE
Nationality: "French",
Hobby: "Developer, Hiking" # HERE
},
]
Run Code Online (Sandbox Code Playgroud)
什么是循环的最佳方式,通过这个对象,改造3个字段programmingLanguage ,LanguageSpoken 并且Hobby ,其类型string为字符串列表(类型)。
所以改造后应该是这个样子。
const userData =
{
id: 30,
firstName: "James",
lastName: "Anderson",
programmingLanguage: ["Java", "Python"], # List of strings
LanguageSpoken: ["French", "German", "English"], # List of strings
Nationality: "French",
Hobby: ["Developer", "Hiking"] # List of strings
},
]
Run Code Online (Sandbox Code Playgroud)
PS:(我知道这很糟糕)但上面的格式是我从后端接收数据的方式,因为我不允许更改我必须处理它。
如果是针对单个领域,我会这样做:
const transformedField = userData.programmingLanguage.toString().split(",");
const resultTransformedField = transformedField.map((i) => Number(i));
const newDataUser = {
...useData,
programmingLanguage: resultTransformedField,
};
Run Code Online (Sandbox Code Playgroud)
但如上所述,我必须修改 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);Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
27 次 |
| 最近记录: |