为了账号安全,请及时绑定邮箱和手机立即绑定

将javascript中的数组更改为更简单的对象

将javascript中的数组更改为更简单的对象

白衣染霜花 2022-01-01 19:57:55
我有一个简单的 JSON,其中包含一个包含更多对象等的数组,如下所示:languagePack:[  {    'key': 'Username',    'value': 'Benutzername',    'group': 'default'  },  {    'key': 'Password',    'value': 'Passwort',    'group': 'default'  }]但我真正想要的是这样的对象:languagePack: {    'Username': 'Benutzername',    'Password': 'Passwort'}因此,我想将数组简化为数组甚至对象内的简单键值对(键是唯一的)。有没有人知道如何使用这些很酷的数组函数来减少这种情况?我只想出了类似 for each 的东西,并为属性“手动”构建对象,但我记得数组有一些很酷的东西,比如“reduce”、展开运算符 (...)、map、every、一些等等。我尝试了类似的东西:var temp = this.languagePack.map(([key, value]) => ({key,value}))console.log(temp)但这只会给我一条错误消息 TypeError: Invalid attempt to destructure non-iterable instance编辑:所有三个答案都运行良好。谢谢。
查看完整描述

3 回答

?
喵喔喔

TA贡献1735条经验 获得超5个赞

基本上,您需要使用forEach而不是map函数,然后您可以将该对象构建为您想要保留的任何键值对。


试试这个,它会解决你的问题。


var temp = {};


this.languagePack.forEach(({key,value}) => {

    temp[key] = value

})


console.log(temp)

注意:这里我们没有使用,map因为我们想要返回对象而不是数组,所以,我们可以reduce在这里使用函数来做到这一点,但我认为这会简单易懂我们想要什么以及我们在这里做什么。


查看完整回答
反对 回复 2022-01-01
?
肥皂起泡泡

TA贡献1829条经验 获得超6个赞

您可以使用 javascriptreduce函数创建一个空对象并将每个键和值放入其中。


const data = [

  {

    'key': 'Username',

    'value': 'Benutzername',

    'group': 'default'

  },

  {

    'key': 'Password',

    'value': 'Passwort',

    'group': 'default'

  }

];


const newData = data.reduce((acc, row) => {

  acc[row.key] = row.value;

  return acc;

}, {});


console.log(newData);

编辑:Donny Verduijn 的好建议。您可以使用 es6 解构来编写更短的函数。


const newData = data.reduce((acc, { key, value }) => ({ ...acc, [key]: value }), {});


查看完整回答
反对 回复 2022-01-01
?
Helenr

TA贡献1780条经验 获得超3个赞

使用Array#map它创建键和值作为对象,并将Object.assign数组值转换为对象


const languagePack = [ { 'key': 'Username', 'value': 'Benutzername', 'group': 'default' }, { 'key': 'Password', 'value': 'Passwort', 'group': 'default' } ];


var res = Object.assign({},...languagePack.map(({key,value}) => ({[key]:value})))


console.log(res)


查看完整回答
反对 回复 2022-01-01
  • 3 回答
  • 0 关注
  • 137 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信