JS 数组转对象 对象转数组 对象数组互相转换

亦凉 2023-02-16 05:28 99阅读 0赞

js 对象数组互相转换 数组转换为对象
JS 数组转对象 对象转数组 对象数组互相转换 数组对象互相转换
JS 数组转对象、对象转数组(针对嵌套深层次比较深的对象或者数组) JS

  1. 声明一个函数,arr_obj ,里面接收一个参数,参数类型只接受对象或者数组
  2. 如果没有传递任何参数 或者 传递的参数类型不符合要求,就会抛出错误异常
  3. 无论是没有传递参数 或者 传递的参数类型不符合要求,抛出异常 并 打印出传递的参数
  4. 如果要查看当前函数的对象,请通过 new 的方式实例化函数 arr_obj ,自行在控制台打印输出
  5. 调用此函数,传入数组会自动转换为对象;传入对象会自动转换为数组

    // 数组转对象、对象转数组
    function arr_obj(query) {
    // 如果未传递参数,就赋值为 undefined
    this.query = query || undefined;
    this.params = this.query;

    // 默认对象
    var defaultObj = { };
    // 默认数组
    var defaultArr = [];
    // 数组转对象
    this.arrToObj = function(arr) {

    1. var obj = { }
    2. for (var i = 0; i < arr.length; i++) {
    3. // 数组转为对象,对象的键=数组值, 对象的值=数组值
    4. obj[arr[i]] = arr[i];
    5. // 如果是数组,就再次调用自身 (this.arrToObj),递归接着循环
    6. if (Object.prototype.toString.call(arr[i]) == "[object Array]") {
    7. var deepArray = this.arrToObj(arr[i])
    8. continue;
    9. } else {
    10. defaultObj[arr[i]] = arr[i]
    11. }
    12. }
    13. this.params = defaultObj;

    };

    // 对象转数组
    this.objToArr = function(obj) {

    1. var arr = [];
    2. for (var i in obj) {
    3. arr.push(obj[i]);
    4. // 如果是对象,就再次调用自身 (this.ObjToObj),递归接着循环
    5. if(Object.prototype.toString.call(obj[i]) == "[object Object]"){
    6. var deepObject=this.objToArr(obj[i]);
    7. continue;
    8. }else{
    9. defaultArr.push(obj[i])
    10. }
    11. }
    12. this.params = defaultArr;

    };

    if (Object.prototype.toString.call(this.query) == “[object Array]”) {

    1. this.arrToObj(this.query);

    } else if (Object.prototype.toString.call(this.query) == “[object Object]”) {

    1. this.objToArr(this.query);

    } else if (Object.prototype.toString.call(this.query) == “[object Undefined]”) {

    1. console.error("没有获取到传递进来的参数", this.params);
    2. throw "没有获取到传递进来的参数"

    } else {

    1. console.error("错误的参数:", this.params,
    2. "错误的参数类型:", Object.prototype.toString.call(this.params));
    3. throw "传递的参数只能是对象或者数组类型"

    }
    return this.params;
    }
    // 调用 对象转数组
    var obj = {
    a1:”a”,
    b1:{

    1. c1:"c",d1:"d"
    2. ,q1:{
    3. q:"q",w:"w",
    4. },

    },
    e1:”e”,
    f1:”f”
    };
    // // 调用 数组转对象
    var arr = [“a”, [“c”,[“e”],”q”],”t”];
    var asd1 = new arr_obj(arr);
    console.log(asd1);
    // 输出 {a: “a”, c: “c”, e: “e”, q: “q”, t: “t”}
    // 调用 对象转数组
    var asd2=new arr_obj(obj);
    console.log(asd2);
    // 输出 [“a”, “c”, “d”, “q”, “w”, “e”, “f”]

点击文字,可以关注此处文章内容

发表评论

表情:
评论列表 (有 0 条评论,99人围观)

还没有评论,来说两句吧...

相关阅读