1.Set 结构-》数组
const items = new Set([1, 2, 3, 4, 5]);
const array = Array.from(items);
2. map 结构-》数组
1.Map 结构转为数组结构,比较快速的方法是使用扩展运算符(...
)
const map = new Map([
[1, 'one'],
[2, 'two'],
[3, 'three'],
]);
[...map.keys()]
// [1, 2, 3]
[...map.values()]
// ['one', 'two', 'three']
[...map.entries()]
// [[1,'one'], [2, 'two'], [3, 'three']]
[...map]
// [[1,'one'], [2, 'two'], [3, 'three']]
3.数组 转为 Map(将数组传入 Map 构造函数,就可以转为 Map)
4.数组 转为Set(将数组传入Set构造函数,就可以转为Set)
5.Map 转为对象(如果所有 Map 的键都是字符串,它可以无损地转为对象。)
function strMapToObj(strMap) {
let obj = Object.create(null);
for (let [k,v] of strMap) {
obj[k] = v;
}
return obj;
}
const myMap = new Map()
.set('yes', true)
.set('no', false);
strMapToObj(myMap)
// { yes: true, no: false }
6.对象转为 Map
1)对象转为 Map 可以通过Object.entries()
2)也可以自己实现一个转换函数。
//对象转为 Map 可以通过
Object.entries()
let obj = {"a":1, "b":2};
let map = new Map(Object.entries(obj));
//自己实现一个转换函数
function objToStrMap(obj) {
let strMap = new Map();
for (let k of Object.keys(obj)) {
strMap.set(k, obj[k]);
}
return strMap;
}
objToStrMap({yes: true, no: false})
// Map {"yes" => true, "no" => false}
7.map转为对象:Object.fromEntries()
//键值对转为对象
Object.fromEntries([
['foo', 'bar'],
['baz', 42]
])
// { foo: "bar", baz: 42 }
//map转为对象
const entries = new Map([
['foo', 'bar'],
['baz', 42]
]);
Object.fromEntries(entries)
// { foo: "bar", baz: 42 }
8.将查询字符串转为对象
Object.fromEntries(new URLSearchParams('foo=bar&baz=qux'))
9.Map 转为 JSON
1)Map 的键名都是字符串,这时可以选择转为对象 JSON
function strMapToJson(strMap) {
return JSON.stringify(strMapToObj(strMap));
}
let myMap = new Map().set('yes', true).set('no', false);
strMapToJson(myMap)
// '{"yes":true,"no":false}'
2)Map 的键名有非字符串,这时可以选择转为数组 JSON。
function mapToArrayJson(map) {
return JSON.stringify([...map]);
}
let myMap = new Map().set(true, 7).set({foo: 3}, ['abc']);
mapToArrayJson(myMap)
// '[[true,7],[{"foo":3},["abc"]]]'
10.JSON 转为 Map
1)所有键名都是字符串
function jsonToStrMap(jsonStr) {
return objToStrMap(JSON.parse(jsonStr));
}
jsonToStrMap('{"yes": true, "no": false}')
// Map {'yes' => true, 'no' => false}
2)整个 JSON 就是一个数组,且每个数组成员本身,又是一个有两个成员的数组。这时,它可以一一对应地转为 Map。这往往是 Map 转为数组 JSON 的逆操作。
function jsonToMap(jsonStr) {
return new Map(JSON.parse(jsonStr));
}
jsonToMap('[[true,7],[{"foo":3},["abc"]]]')
// Map {true => 7, Object {foo: 3} => ['abc']}
11.对象转为数组:Object.keys
for (var key of Object.keys(someObject)) {
console.log(key + ': ' + someObject[key]);
}
12.数组转字符串:arr.join()
var arr=[1,2,3,4];
console.log(arr.join()); //1,2,3,4
console.log(arr.join(":")); //1:2:3:4
console.log(arr); //[1,2,3,4],原数组不变