繁体   English   中英

映射对象数组

[英]Map array of objects

请仔细阅读问题,这不是以下内容的重复:

让我们考虑以下对象数组:

var obj = [{ 'key1' : 'value1' }, { 'key2' : 'value2' }];

我想映射数组以获取每个对象的键和值。 就像是:

obj.map((key, val) => console.log(key, val));

我已经尝试过很多东西,比如Object.entries(obj)但它总是导致复杂的解决方案,有很多括号,比如Object.entries(obj)[0][1]

有没有一种简单、漂亮且有效的方法来映射对象数组? 注意我需要每个对象的键和值

您似乎只想打印出来或访问它们:

.map将数组更改为不同的数组,这似乎不是您要查找的内容。

 var objs = [{ 'key1' : 'value1' }, { 'key2' : 'value2' }]; objs.forEach(obj => { for (let p in obj) console.log(p, obj[p]); });

如果您正在寻找key1=value1&key2=value2作为答案,并且您知道每个对象中只有 1 个键和值,那么它是:

 let objs = [{ 'key1' : 'value1' }, { 'key2' : 'value2' }]; let s = objs.map(obj => `${Object.keys(obj)[0]}=${Object.values(obj)[0]}`).join("&"); console.log(s);

但您可能想使用encodeURIComponent()对参数进行编码,使其:

 let objs = [{ 'key1' : 'value1 hello' }, { 'key2' : 'value2 & 3' }]; let s = objs.map(obj => `${encodeURIComponent(Object.keys(obj)[0])}=${(encodeURIComponent(Object.values(obj)[0]))}`).join("&"); console.log(s);

如果您的键都是字母数字和下划线字符,那么您不需要在键上使用encodeURIComponent()

var obj = [{ 'key1' : 'value1' }, { 'key2' : 'value2' }];
obj.forEach(el => {
  for (var prop in el) {
    console.log(prop, el[prop])
  }
})

// results: 
// key1 value1
// key2 value2

不像@nopole 回答的那么干净,但是这种类型可以实现您想要的键值对象。

 var objs = [{ 'key1' : 'value1' }, { 'key2' : 'value2' }]; objs.forEach(obj => { // loop over keys-and-values for (let [key, value] of Object.entries(obj)) { console.log(key, value); } });

这也适用于具有多个键的对象:

 var objs = [{ 'key1' : 'value1', "key2":"value2" }, { 'key3' : 'value3' }]; objs.forEach(obj => { // loop over keys-and-values for (let [key, value] of Object.entries(obj)) { console.log(key, value); } });

暂无
暂无

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

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