我有一个对象
const data = {
"name-uz": "name uz",
"desc-uz": "<p>desc uz</p>\r\n",
"name-en": "name en",
"desc-en": "<p>desc en</p>\r\n",
days: "5",
price: "2000",
extra_price: "1000",
};
我想做这件事:
{
name: {
uz: "name-uz",
en: "name-en"
}
desc: {
uz: "desc-uz",
en: "desc-en"
}
}
我怎样才能实现这个目标?
我不知道该怎么办...
这是我能想到的最短的。
我假设您有两种语言的名称和描述,而不仅仅是名称 uz 和 desc uz
const stripHTML = (html) => {
const temp = document.createElement("div");
temp.innerHTML = html;
return temp.textContent?.trim() ?? "";
};
const newData = {};
Object.keys(data).forEach((key) => {
const [type, lang] = key.split("-");
if (lang) {
newData[type] ??= {};
newData[type][lang] = type.startsWith("desc") ? stripHTML(data[key]) : data[key];
}
});
console.log(newData);
<script>
const data = {
"name-uz": "name uz",
"desc-uz": "<p>Tez jigarli tilov terishib, bu bo'ri yuguradi.</p>\r\n",
"name-en": "name en",
"desc-en": "<p>The quick brown fox jumps over the lazy dog.</p>\r\n",
days: "5",
price: "2000",
extra_price: "1000",
};
</script>
使用
Object.keys
迭代对象属性
使用
String.prototype.split
分割字符串
const data = {
"name-uz": "name uz",
"desc-uz": "<p>desc uz</p>\r\n",
"name-en": "name en",
"desc-en": "<p>desc en</p>\r\n",
days: "5",
price: "2000",
extra_price: "1000",
};
const obj = {}
for (const key of Object.keys(data)) {
if (!key.includes('-')) continue
const [part1, part2] = key.split('-')
if (!(part1 in obj)) obj[part1] = {}
obj[part1][part2] = key
}
console.log(obj)