繁体   English   中英

如何获取数组中对象的键?

[英]How can i get the key of Object inside Array?

我有来自后端服务器的响应数据,如下例所示:

[
    {
        id: "haskjdhak",
        name: "lorem ipsun 1",
        desc: "any description 1"
    },
    {
        id: "78khasc",
        name: "lorem ipsun 2",
        desc: "any description 2"
    },
    {
        id: "56jkjn",
        name: "lorem ipsun 3",
        desc: "any description 3"
    }
]

我的目标是我想将该响应数据分成标头和值,其中标头是key={id,name,desc} ,值是每个索引的值。 好吧,让我举个例子,数据将成为表格数据,如下所示:

ID 名称 描述
哈斯克达克 lorem ipsun 1 任何描述 1
78khasc lorem ipsun 2 任何描述 2
56jkjn lorem ipsun 3 任何描述 3

我可以用什么方法来做?

这样的事情也许可以帮助你

yourArray.map(obj => ({key:"id, name, desc", value:`${obj.id}, 
${obj.name}, ${obj.desc}`}))

阅读对您问题的编辑,也许这更有用:

使用Map ,对于每个key您都有一个包含值的数组。

 const response = [ {id:"haskjdhak", name: "lorem ipsun 1", desc: "any description 1"}, {id:"78khasc", name: "lorem ipsun 2", desc: "any description 2"}, {id:"56jkjn", name: "lorem ipsun 3", desc: "any description 3"} ] const map = new Map(); response.map(m => (Object.keys(m).forEach(e => { map.get(e) === undefined ? map.set(e, [m[e]]) : map.get(e).push(m[e]) } ))) map.forEach((value,key) => { console.log(`${key} = ${value}`); })

同样使用node.JS直接使用console.log(map)你可以看到:

Map(3) {
  'id' => [ 'haskjdhak', '78khasc', '56jkjn' ],
  'name' => [ 'lorem ipsun 1', 'lorem ipsun 2', 'lorem ipsun 3' ],
  'desc' => [ 'any description 1', 'any description 2', 'any description 3' ]
}

这段代码从您的对象中获取所有键,并使用该键创建一个Map 如果该键不存在任何值,则添加一个具有初始值的数组; 如果存在一个值(不是undefined )它push()新值。

此外,使用这种方法,您的数据可以包含不同的键,例如,使用以下条目数据:

const response = [
    { id: "haskjdhak", name: "lorem ipsun 1", desc: "any description 1" },
    { id: "78khasc", name: "lorem ipsun 2", desc: "any description 2" },
    { id: "56jkjn", name: "lorem ipsun 3", desc: "any description 3" },
    {
        id: "1"
    },
    {
        new: "value"
    },
    {
        id: "new", name: "new", desc: "new", other: "new"
    }
]

结果是:

Map(5) {
  'id' => [ 'haskjdhak', '78khasc', '56jkjn', '1', 'new' ],
  'name' => [ 'lorem ipsun 1', 'lorem ipsun 2', 'lorem ipsun 3', 'new' ],
  'desc' => [
    'any description 1',
    'any description 2',
    'any description 3',
    'new'
  ],
  'new' => [ 'value' ],
  'other' => [ 'new' ]
}

——原答案——

如果我理解正确,你可以试试这个:

 const response = [ {id:"haskjdhak", name: "lorem ipsun 1", desc: "any description 1"}, {id:"78khasc", name: "lorem ipsun 2", desc: "any description 2"}, {id:"56jkjn", name: "lorem ipsun 3", desc: "any description 3"} ] var result = response.map(m => ({key:(Object.keys(m).join(",")), value:(Object.values(m).join(","))})) console.log("result = ", result)

此代码创建一个包含key/value对象的数组,其中key是键(包含所有值的字符串), value相同。

暂无
暂无

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

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