基于其他属性(语言)更改JavaScript属性
我想使用基于语言的JavaScript更改对象基于其他属性(语言)更改JavaScript属性,javascript,json,Javascript,Json,我想使用基于语言的JavaScript更改对象department\u descr: var data = { "language": "EN", "contacts": [ { "department_descr": { "en": "Management", "fr": "Gestion" } } ] }; 输出: { "language": "EN", "contacts": [
department\u descr
:
var data = {
"language": "EN",
"contacts": [
{
"department_descr": {
"en": "Management",
"fr": "Gestion"
}
}
]
};
输出:
{
"language": "EN",
"contacts": [
{
"department_descr": "Management"
}
]
}
首先,示例对象的格式不正确,这将导致语法错误。将其更改为:
var data = {
"language": "EN",
"contacts": [
{
"department_descr": {
"en": "Management",
"fr": "Gestion"
}
}
]
}
其次,在这种情况下不建议更改对象。应使用所需的模型创建新对象:
var desc = data.contacts[0].department_descr[data.language.toLowerCase()];
var newData = Object.assign({}, data, { contacts: [ { department_descr: desc } ] })
首先,示例对象的格式不正确,这将导致语法错误。将其更改为:
var data = {
"language": "EN",
"contacts": [
{
"department_descr": {
"en": "Management",
"fr": "Gestion"
}
}
]
}
其次,在这种情况下不建议更改对象。应使用所需的模型创建新对象:
var desc = data.contacts[0].department_descr[data.language.toLowerCase()];
var newData = Object.assign({}, data, { contacts: [ { department_descr: desc } ] })
下面是一个函数,它将接受这样一个对象作为参数,并根据language属性设置描述 从技术上讲,它返回一个新对象,而不是改变现有对象,但在绝大多数情况下,这是您想要的
function setDescription(srcObject){
let language = srcObject.language.toLowerCase();
let outputObj = Object.assign({}, srcObject);
outputObj.contacts = srcObject.contacts.map((contact) =>{
let newDescription = contact.department_descr[language];
contact.department_descr = newDescription;
return contact;
});
return outputObj;
}
这将适用于任意长度的contacts数组。它有一些假设
下面是一个函数,它将接受这样一个对象作为参数,并根据language属性设置描述 从技术上讲,它返回一个新对象,而不是改变现有对象,但在绝大多数情况下,这是您想要的
function setDescription(srcObject){
let language = srcObject.language.toLowerCase();
let outputObj = Object.assign({}, srcObject);
outputObj.contacts = srcObject.contacts.map((contact) =>{
let newDescription = contact.department_descr[language];
contact.department_descr = newDescription;
return contact;
});
return outputObj;
}
这将适用于任意长度的contacts数组。它有一些假设
演示:
var数据={
“语言”:“EN”,
“联系人”:[
{
“部门描述”:{
“en”:“管理”,
“fr”:“手势”
}
}
]
};
for(data.contacts的变量i){
if(Object.keys(i.department\u descr).includes(data.language.toLowerCase())==true){
i、 department_descr=i.department_descr[data.language.toLowerCase();
}
}
控制台日志(数据)代码>演示:
var数据={
“语言”:“EN”,
“联系人”:[
{
“部门描述”:{
“en”:“管理”,
“fr”:“手势”
}
}
]
};
for(data.contacts的变量i){
if(Object.keys(i.department\u descr).includes(data.language.toLowerCase())==true){
i、 department_descr=i.department_descr[data.language.toLowerCase();
}
}
控制台日志(数据)代码>这些是JavaScript对象。JSON是一种序列化格式,其中数据转换为文本。您尝试了什么?这些是JavaScript对象。JSON是一种序列化格式,其中数据转换为文本。您尝试了什么?很好:-)将其标记为答案,以便其他人会找到它很好:-)将其标记为答案,以便其他人会找到它