繁体   English   中英

如何通过数组 map 并在 javascript 中的映射数组内动态设置键和值

[英]How to map through an array and dynamically set key and values inside mapped array in javascript

我有一个具有以下格式的数组 arr

data:{
  result: [Array]
 }

我正在映射一个数组并设置键和值以形成这样的新数组。

const userData= arr.map((user) => ({
userid : user.data.result[0].info.uid,
termStat: user.data.result[0].info['attr'].termStat

}));

这会给我 userData 数组

[{
userid: 'y74',
termStat:[[Object]]
}]

我怎样才能把它做成下面的格式。 将 key 作为 userid 的值。 这是预期的结果

{
  y74: { termStat: [[Object]]
 }

您可以将密钥设置为userid

 const arr = [{ data: { result: [ { info: { uid: 12, attr: { termStat: 'foobar' } } } ] } }] const userData= arr.map(user => ({ [user.data.result[0].info.uid]: { 'termStat': user.data.result[0].info['attr'].termStat } })); console.log(userData)

如果我理解正确,您可以将用户标识用作变量,将其放在方括号中并为其赋值

[user.data.result[0].info.uid]: {'termStat': user.data.result[0].info['attr'].termStat}

数组 map function 总是返回一个数组。 如果你想从输入数组Array.reduce()返回 map function 会很有帮助。 就像是:

 const arr = [{ data: { result: [{ info: { uid: 'y74', attr: { termStat: [[{}]] } } }] } }]; const userData = arr.reduce((result, user) => { const key = user.data.result[0].info.uid; const termStat = user.data.result[0].info['attr'].termStat; result[key] = {termStat}; return result; }, {}); console.log(userData);

希望这可以帮助:)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM