简体   繁体   English

Object.keys(data).map(v) 没有给出实际的键值

[英]Object.keys(data).map(v) not giving the actual key value

I want to convert an object into an array of object but my code give the wrong result like shown below..我想将 object 转换为 object 数组,但我的代码给出了错误的结果,如下所示..

// object
data = { user_id : '123' }

// expected result
data = [ { user_id : '123' } ]

// what I get instead
data = [ { v : '123' } ]

my code:我的代码:

let arr = [];
Object.keys(data).map(v => {
  console.log(v, data[v]); // here it shows 'user_id' and '123' as it's supposed to
  arr.push({ v:data[v] }); // but here it uses the 'v' as property instead of 'user_id'
});

You need to put v inside a square bracket您需要将v放在方括号内

 const data = { user_id: '123' } let arr = []; Object.keys(data).map(v => { arr.push({ [v]: data[v] }); }); console.log(arr)

Alternatively you can also use Object.entries .或者,您也可以使用Object.entries You dont need initialize let arr = [];你不需要初始化let arr = []; as map will create a new array因为map将创建一个新数组

 const data = { user_id: '123' } const arr = Object.entries(data).map(v => { return { [v[0]]: v[1] } }); console.log(arr)

when you need to use variable as key in object, you must use []. object中需要使用变量作为key时,必须使用[]。

Example:例子:

const key = 'user_id'
const obj = {
    [key]: 'user'
}

## result
{
'user_id': 'user
}

So change v to [v].因此将 v 更改为 [v]。

let arr = [];
Object.keys(data).map(v => {
  arr.push({ [v]:data[v] }); // replace v to [v] 
});

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

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