[英]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.