最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • 小技巧系列 -- 对象、数组、Map、JSON之间的相互转换

    正文概述 掘金(ALKAOUA)   2021-08-24   504

    ES5 中 对象 与数组,JSON 之间的相互转换

    • 对象转换为数组
    // 取 keys
    const obj1 = {
        name1: undefined,
        name2: undefined,
        name3: undefined,
    }
    const arr1 = Object.keys(obj)
    // 取 values
    const obj2 = {
        name1: 'aaa',
        name2: 'bbb',
        name3: 'ccc',
    }
    const arr2 = Object.values(obj)
    console.log(arr)
    // 都取
    const obj3 = {
        name1: 'aaa',
        name2: 'bbb',
        name3: 'ccc',
    }
    const arr3 = Object.keys(obj)
    console.log(arr)
    
    • 数组转换为对象
    // 索引为 key 值,数组元素为 value 值
    const arr1 = ['name1','name2','name3']
    const obj1 = {..arr1} // { '0': 'name1', '1': 'name2', '2': 'name3' }
    // 数组元素为 key 值,value 值为 undefined
    const arr2 = ['name1','name2','name3']
    const obj2 = {}
    arr2.forEach((item)=>{ obj2[item] = undefined })
    console.log(obj2)// { name1: undefined, name2: undefined, name3: undefined }
    

    ES6 中 Map 与对象、数组,JSON 之间的相互转换

    以下内容来自 原文

    • Map转为数组
    // 保留 key、value,转换成二元数组
    const map = new Map();
    map.set(1,"foo").set(2,"bar").set(3,"baz");
    const arr = [...map]; // 法一:[ [ 1, 'foo' ], [ 2, 'bar' ], [ 3, 'baz' ] ]
    const arr = Array.from(map); // 法二:[ [ 1, 'foo' ], [ 2, 'bar' ], [ 3, 'baz' ] ]
    
    • 数组 转为 Map
    const arr = ["foo","bar","baz"];
    // key 值是索引、value 值是元素
    const map1 = new Map(arr.map( (value,key) => [key,value]));
    // Map(3) { 0 => 'foo', 1 => 'bar', 2 => 'baz' }
    
    // key 值是元素,value 值是 undefined
    const map2 = new Map(arr.map((value) => [value,undefined]));
    // Map(3) { 'foo' => undefined, 'bar' => undefined, 'baz' => undefined }
    
    • Map 转为对象
    const map = new Map();
    map.set(1,"foo").set(2,"bar").set(3,"baz");
    const mapToObj = (map) => {
         let obj = {};
         for(let [k,v] of map) {
             obj[k] = v;
         }
         return obj;
    }
    console.log(mapToObj(map));
    
    • 对象转为 Map
    const obj = {
           "1" : "foo",
           "2": "bar",
          "3" : "baz",
    }
    const objToMap = (obj) => {
          let map = new Map();
          for(let key in obj) {
               map.set(key,obj[key]);
          }
          return map;
    }
    console.log(objToMap(obj));
    
    • Map 转为 JSON(借助 Map 转 JSON)
    const map = new Map();
    map.set(1,"foo").set(2,"bar").set(3,"baz");
    const mapToJson = (map) => JSON.stringify(mapToObj(map));
    console.log(mapToJson(map));
    
    • JSON 转为 Map(借助对象转 Map)
    let json = '{"1":"foo","2":"bar","3":"baz"}';
    const jsonToMap = (json) => objToMap(JSON.parse(json));
    console.log(jsonToMap(json));
    

    起源地下载网 » 小技巧系列 -- 对象、数组、Map、JSON之间的相互转换

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元