Javascript:读取关联数组的更好方法
我将这个数组命名为values,其中包含对象Javascript:读取关联数组的更好方法,javascript,Javascript,我将这个数组命名为values,其中包含对象 let值=[ {name:“firstname”,value:“Mike”}, {name:“lastname”,value:“Smith”}, {名称:“电子邮件地址”,值:mike@test.com"}, {名称:“角色”,值:“123”}] //然后我有这样的代码,这是有效的 让editUser={ “firstnameofperson”:值[0]。值, “lastnameofperson”:值[1]。值, “emailaddress”:值[
let值=[
{name:“firstname”,value:“Mike”},
{name:“lastname”,value:“Smith”},
{名称:“电子邮件地址”,值:mike@test.com"},
{名称:“角色”,值:“123”}]
//然后我有这样的代码,这是有效的
让editUser={
“firstnameofperson”:值[0]。值,
“lastnameofperson”:值[1]。值,
“emailaddress”:值[2]。值,
“roleofperson”:值[3]。值,
}
console.log(editUser)代码>这样做的一种方法可以是:
function translate (d) {
let p={};
d.map(r=>p[r.name]=r.value);
return p;
}
(注意:'emailaddressofperson',而不是'emailaddress',但这是一个连贯性问题,您应该根据此答案更改属性名称-甚至删除'ofperson'后缀)
让arr=[
{name:“firstname”,value:“Mike”}
,{name:“lastname”,值:“Smith”}
,{名称:“电子邮件地址”,值:mike@test.com" }
,{name:“role”,value:“123”}
]
让editUser={};
arr.forEach(x=>editUser[x.name+'ofperson']=x.value)
console.log(editUser)代码>
.as控制台包装{max height:100%!important;top:0;}
一种方法是:
function translate (d) {
let p={};
d.map(r=>p[r.name]=r.value);
return p;
}
(注意:'emailaddressofperson',而不是'emailaddress',但这是一个连贯性问题,您应该根据此答案更改属性名称-甚至删除'ofperson'后缀)
让arr=[
{name:“firstname”,value:“Mike”}
,{name:“lastname”,值:“Smith”}
,{名称:“电子邮件地址”,值:mike@test.com" }
,{name:“role”,value:“123”}
]
让editUser={};
arr.forEach(x=>editUser[x.name+'ofperson']=x.value)
console.log(editUser)代码>
。作为控制台包装{max height:100%!important;top:0;}
您可以如下修改数组
var值=[];
值[“firstname”]={name:“firstname”,值:“Mike”};
值[“lastname”]={name:“lastname”,值:“Smith”};
值[“emailaddress”]={name:“emailaddress”,值:mike@test.com"};
值[“角色”]={name:“角色”,值:“123”};
console.log(值[“firstname”].value)代码>您可以按如下方式修改数组
var值=[];
值[“firstname”]={name:“firstname”,值:“Mike”};
值[“lastname”]={name:“lastname”,值:“Smith”};
值[“emailaddress”]={name:“emailaddress”,值:mike@test.com"};
值[“角色”]={name:“角色”,值:“123”};
console.log(值[“firstname”].value)代码>请尝试以下操作:
let values = [
{name: "firstname", value: "Mike"},
{name: "lastname", value: "Smith "},
{name: "emailaddress", value: "mike@test.com"},
{name: "role", value: "123"}
]
const newPropNames = [
"firstnameofperson",
"lastnameofperson",
"emailaddress",
"roleofperson",
]
const newValues = values
.map((o,i) => ({ [newPropNames[i]]: o.value }))
.reduce(((acc, nv) => Object.assign(acc, nv)), {})
试试这个:
let values = [
{name: "firstname", value: "Mike"},
{name: "lastname", value: "Smith "},
{name: "emailaddress", value: "mike@test.com"},
{name: "role", value: "123"}
]
const newPropNames = [
"firstnameofperson",
"lastnameofperson",
"emailaddress",
"roleofperson",
]
const newValues = values
.map((o,i) => ({ [newPropNames[i]]: o.value }))
.reduce(((acc, nv) => Object.assign(acc, nv)), {})
在这种情况下,我通常使用转换函数
例如,它可以是:
function translate (d) {
let p={};
d.map(r=>p[r.name]=r.value);
return p;
}
如果您喜欢内联线:
let output = ((d)=>{let p={};d.map(r=>p[r.name]=r.value);return p})([
{name: "firstname", value: "Mike"},
{name: "lastname", value: "Smith "},
{name: "emailaddress", value: "mike@test.com"},
{name: "role", value: "123"}
]);
但是,除非您只需要转换单个项,否则为了可读性,我更喜欢第一种方法,在这种情况下,我更喜欢您的版本(我发现情况并非如此)。在这种情况下,我通常使用转换函数
例如,它可以是:
function translate (d) {
let p={};
d.map(r=>p[r.name]=r.value);
return p;
}
如果您喜欢内联线:
let output = ((d)=>{let p={};d.map(r=>p[r.name]=r.value);return p})([
{name: "firstname", value: "Mike"},
{name: "lastname", value: "Smith "},
{name: "emailaddress", value: "mike@test.com"},
{name: "role", value: "123"}
]);
但是,除非您只需要转换单个项,否则为了可读性,我更喜欢第一种方法,在这种情况下,我更喜欢您的版本(我发现情况并非如此)。有一个名为ES6的对象,它保存键:值对,并有一种通过使用.get获取值的方法。这与您的对象不同,但却是另一种方式
//your data
let data = [{
name: "firstname",
value: "Mike"
},
{
name: "lastname",
value: "Smith "
},
{
name: "emailaddress",
value: "mike@test.com"
},
{
name: "role",
value: "123"
}
];
//turn the data into their own arrays for the map object
let newArr = data.map((i) => [i.name, i.value]);
//create the map object
let testMap = new Map(newArr);
//shows the map obj
console.log(testMap)
/*
0 :{"firstname" => "Mike"}
1 :{"lastname" => "Smith "}
2 :{"emailaddress" => "mike@test.com"}
3 :{"role" => "123"}
*/
//an example of getting the firstname
console.log(testMap.get("firstname")); //returns "Mike"
有一个名为ES6的对象,它持有key:value对,并且有一种通过使用.get向您获取值的方法。这与您的对象不同,但却是另一种方式
//your data
let data = [{
name: "firstname",
value: "Mike"
},
{
name: "lastname",
value: "Smith "
},
{
name: "emailaddress",
value: "mike@test.com"
},
{
name: "role",
value: "123"
}
];
//turn the data into their own arrays for the map object
let newArr = data.map((i) => [i.name, i.value]);
//create the map object
let testMap = new Map(newArr);
//shows the map obj
console.log(testMap)
/*
0 :{"firstname" => "Mike"}
1 :{"lastname" => "Smith "}
2 :{"emailaddress" => "mike@test.com"}
3 :{"role" => "123"}
*/
//an example of getting the firstname
console.log(testMap.get("firstname")); //returns "Mike"
中包含json对象
-没有json对象之类的东西。。。您的代码中没有json,它只是一个对象数组。对不起,我的键入错误,请详细说明“没有json对象”的含义。我诚恳地问,因为这一点:w3schools是一个拙劣的笑话-w3schools
所说的任何东西都不值得存储它所用的比特数,也不值得花时间阅读它,其中包含json对象
-没有json对象这样的东西。。。您的代码中没有json,它只是一个对象数组。对不起,我的键入错误,请详细说明“没有json对象”的含义。我诚恳地问,因为这一点:w3schools是一个拙劣的笑话-w3schools所说的任何东西都不值得存储它所用的比特数,也不值得花时间阅读它Hanks,那就很好了,我增加了你的回答。我得到的代码比我在这里写的要复杂得多。但是这给了我一个解决方案谢谢,那会很好的,我已经增加了你的回答。我得到的代码比我在这里写的要复杂得多。但这给了我一个解决方案Hi@Pawan_sasanka,你真的认为提问是“一种更好的方式”吗?…祝贺你的努力嗨@Pawan_sasanka,你真的认为提问是“一种更好的方式”吗?…祝贺你的努力