学习如何在javascript中把一个对象转换为地图的例子。
如何在javascript中把普通对象转换为地图
在开发过程中,每个开发者都会面临这样的问题:数据的对象要转换为地图。
对象和地图在javascript中是不同的数据类型。
对象是一组项目,每个项目都包含键和值,用逗号隔开,用括号括起来。
地图是一个独立的数据结构,用于使用散列法存储键和值对。
这个例子显示了我们如何在javascript中创建一个对象
javascript中的对象声明和创建
let objData={"id":1,"name":"cloudhadoop"}
地图是ES6中引入的一个单独的数据结构,用于存储键和值对。地图可以用Map关键字创建。
下面是一个创建内联地图的例子,用数据创建和分配。
var mapData = new Map([["1","cloudhadoop"],["2","name2"]]);
两者都是JavaScript中独立的数据类型。对象到地图的转换不是自动的。我们必须写一段代码来处理这个问题。
转换的例子
我们有很多方法可以将对象转换为地图。
下面是使用对象键和地图关键字的例子。
- 创建了内联对象
- 使用new操作符创建的地图对象
- 使用对象键和属性迭代数组检索了对象的属性数组
- 将上述步骤中的数据作为一个地图传递出去
let objData = { "id": 1, "name": "cloudhadoop" }
let map = new Map();
map = Object.keys(objData).map(
key => [key, objData[key]])
console.log(JSON.stringify(map));
使用对象: ES6中地图构造函数的条目
Es6地图有一个构造函数,接受对象的结果。 entries方法。
let objData = { "id": 1, "name": "cloudhadoop" }
const map = new Map(Object.entries(obj));
console.log(JSON.stringify(map));
输出是
[["id",1],["name","cloudhadoop"]]
使用Jquery的每个函数
jquery中的each函数是对一个对象的值进行迭代,它接受一个对象,一个回调函数将为一个对象的每个条目执行。
let objData = { "id": 1, "name": "cloudhadoop" }
const mymap = new Map();
$.each( objData, function( key, value ) {
mymap[key] = value;
});
console.log(JSON.stringify(mymap));
带有toPairs函数的lodash
toPairs函数接受一个字符串属性的对象,返回map或set,toPairs方法的输出被传递,Map构造函数被传递。
const _ = require('lodash');
let objData = { "id": 1, "name": "cloudhadoop" }
const newmap = new Map(_.toPairs(objData));
console.log(JSON.stringify(newmap));
如何在javascript中把一个对象数组转换为Map?
一个数组对象用方括号括起来 -[ 数组对象]
我们有很多方法可以将数组对象转换为地图。
ES6的地图构造器有数组地图方法
使用数组map()方法对数组对象进行迭代,并进行回调。
var arrayData = [
{ id: '1', name: 'kiran' },
{ id: '2', name: 'Franc' }
];
var mymap = new Map(arrayData.map(entry => [entry.id, entry.name]));
console.log(JSON.stringify(mymap));
输出是
[["1","kiran"],["2","Franc"]]
使用lodash的fromPairs函数
lodash的fromPairs函数接受map,这是一个数组map条目的结果。
var arrayData = [
{ id: '1', name: 'kiran' },
{ id: '2', name: 'Franc' }
];
const map = _.fromPairs(arrayData.map(object => [object.id, object.name]));
console.log(JSON.stringify(mymap));
结语
总而言之,我们已经学会了在javascript中把对象转换成地图的不同方法。