Javascript:读取关联数组的更好方法

Javascript:读取关联数组的更好方法,javascript,Javascript,我将这个数组命名为values,其中包含对象 let值=[ {name:“firstname”,value:“Mike”}, {name:“lastname”,value:“Smith”}, {名称:“电子邮件地址”,值:mike@test.com"}, {名称:“角色”,值:“123”}] //然后我有这样的代码,这是有效的 让editUser={ “firstnameofperson”:值[0]。值, “lastnameofperson”:值[1]。值, “emailaddress”:值[

我将这个数组命名为values,其中包含对象

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,你真的认为提问是“一种更好的方式”吗?…祝贺你的努力