如何使用新构造函数为json中的每个节点创建实例?

时间:2016-02-10 21:31:57

标签: javascript

我即将开始编写一个组织结构图应用程序,我将使用this library,其中提供的代码示例非常明确:

        var options = new primitives.orgdiagram.Config();

        var items = [
            new primitives.orgdiagram.ItemConfig({
                id: 0,
                parent: null,
                title: "Scott Aasrud",
                description: "VP, Public Sector",
                image: "demo/images/photos/a.png"
            }),
            new primitives.orgdiagram.ItemConfig({
                id: 1,
                parent: 0,
                title: "Ted Lucas",
                description: "VP, Human Resources",
                image: "demo/images/photos/b.png"
            }),
            new primitives.orgdiagram.ItemConfig({
                id: 2,
                parent: 0,
                title: "Joao Stuger",
                description: "Business Solutions, US",
                image: "demo/images/photos/c.png"
            })
        ];

        options.items = items;
        options.cursorItem = 0;
        options.hasSelectorCheckbox = primitives.common.Enabled.True;

        jQuery("#basicdiagram").orgDiagram(options);

这对我来说很奇怪,是items数组,我不会将该数组放在我要构建我的App的主文件中。实际上数据将来自json,所以想象一下items数组来自一个单独的json文件,所以。 。 。我该怎么做才能将这些数据放入json中,然后在我的主文件中调用它,并为该json中的每个节点创建像new primitives.orgdiagram.ItemConfig({ . . . })这样的实例?

你有什么建议?

2 个答案:

答案 0 :(得分:1)

您可以使用[].map。它使用每个数组项作为参数调用的函数返回的值创建一个新数组:

var items = JSON.parse(myjson).map(function(item) {
  return new primitives.orgdiagram.ItemConfig(item);
});

答案 1 :(得分:0)

实际上,为了代码可读性,通过新对象定义节点是为了引用用户选择正确的对象类型。 Chart也支持JSON对象。

llik.probit2<- function(aL,beta, Ks, Kw, Bs, Bw, dta){
  Y <- as.matrix(dta$qualified)
  sce1 <- as.matrix(dta$eds)
  wce1 <- as.matrix(dta$edw)
  sce1_obs <- (as.matrix(dta$eds_obs))
  wce1_obs <- (as.matrix(dta$edw_obs))
  obs <- as.matrix(dta$CombinedObservable1)
  c <- as.matrix(dta$const)
  phi <- pnorm(ifelse(Y == 0, -1, 1) * (-aL*c + beta*obs + (Bs+Bs*Ks-aL)*sce1 -beta*Ks*sce1_obs + (Bw+Bw*Kw-aL)*wce1 - beta*Kw*wce1_obs), log.p = TRUE)
  -sum(phi)
}

starting.pointmle2 <- list(aL=1.4, beta=0.3, Ks=0.5, Kw=0.5, Bs=0.5, Bw=0.5)

result1 <- mle2(llik.probit2, start = starting.pointmle2, data=list(dta=Mydata), skip.hessian=FALSE)