還原Vue.js的data內的數組和對象


最近學習Vue.js發現其為了實現對data內的數組和對象進行雙向綁定,將數組和對象進行了封裝。

如下的對象

todos: [
    {
        id: 1,
        title: 'Do the dishes',
    },
    {
        id: 2,
        title: 'Take out the trash',
    },
    {
        id: 3,
        title: 'Mow the lawn'
    }
]

會被封裝成:

而封裝后的這個對象傳遞到后台會出現無法識別的現象。

於是,我開始嘗試將Vue.js封裝后的對象進行封裝。

var restore = function (vueObject) {
    var result = null;
    var type = Object.prototype.toString.call(vueObject);

    switch (type) {
        case '[object Array]':
            result = toArray(vueObject);
            break;

        case '[object Object]':
            result = toObject(vueObject);
            break;

        default:
            result = vueObject;
            break;
    }

    function toArray(vueArray) {
        var array = [];

        for (var index in vueArray) {
            var item = restore(vueArray[index]);
            array.push(item);
        }

        return array;
    }

    function toObject(vueObject) {
        var obj = new Object();

        for (var index in vueObject) {
            var item = restore(vueObject[index]);
            obj[index] = item;
        }

        return obj;
    }

    return result;
};

測試用例:

var json = {
    a: [
        {
            a1: {
                a11: [1, 2, 3],
                a12: [1, 2, 3]
            },
            a2: [{ a21: '21' }]
        },
        {
            a3: {
                a31: [1, 2, 3],
                a32: [1, 2, 3]
            },
            a4: [{ a41: '41' }]
        }
    ],
    b: {
        b1: 'b1',
        b2: 2
    }
};

Vue.js對象:

轉換后的結果:

{"a":[{"a1":{"a11":[1,2,3],"a12":[1,2,3]},"a2":[{"a21":"21"}]},{"a3":{"a31":[1,2,3],"a32":[1,2,3]},"a4":[{"a41":"41"}]}],"b":{"b1":"b1","b2":2}}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM