有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

javascript通过反序列化节点中的json对象集合来创建js对象集合。js

我有一个原型课程:

function temp(){
    this.a=77;
}

temp.prototype.getValue = function(){
    console.log(this.a);
}

以及json对象数组:

var x=[{a:21},{a:22},{a:23}];

是否有任何方法可以直接使用json对象数组实例化类temp数组,就像泛型帮助我们在Java中使用Jackson TypeReference实现的那样

var y= new Array(new temp());
//something similar to what Object.assign achieves for a single object 

因此,它可以扩展到其他对象集合,如Map<obj1,obj2>


共 (1) 个答案

  1. # 1 楼答案

    Javascript中没有内置的实现方法。只需对数据或构造函数进行一些假设,就可以创建自己的函数来创建这样的数组:

    // pass the constructor for the object you want to create
    // pass an array of data objects where each property/value will be copied
    // to the newly constructed object
    // returns an array of constructed objects with properties initialized
    function createArrayOfObjects(constructorFn, arrayOfData) {
        return arrayOfData.map(function(data) {
            let obj = new constructorFn();
            Object.keys(data).forEach(function(prop) {
               obj[prop] = data[prop];
            });
            return obj;
        });
    }
    

    或者,您可以创建一个构造函数,它接受一个数据对象,然后从该对象初始化自身:

    // pass the constructor for the object you want to create
    // pass an array of data objects that will each be passed to the constructor
    // returns an array of constructed objects 
    function createArrayOfObjects(constructorFn, arrayOfData) {
        return arrayOfData.map(function(data) {
            return new constructorFn(data);
        });
    }
    
    // constructor that initializes itself from an object of data passed in
    function Temp(data) {
        if (data && data.a) {
            this.a = data.a;
        }
    }