有效的方法来从属性阵列和阵列匹配属性值的创建JavaScript对象 [英] efficient way to create JavaScript object from array of properties and array of matching property values

查看:97
本文介绍了有效的方法来从属性阵列和阵列匹配属性值的创建JavaScript对象的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

是否有可能创建没有使用嵌套的for循环的的数据1 数组?

  //我开始归一化数据
VAR栏= [姓名,年龄];
VAR DATA2 = [[约翰,20],[汤姆,25];
//我想要的结果看起来像规格化
VAR数据1 = [{名:约翰,时代:20},{名:汤姆,时代:25}];
//我的解决办法
变种DATA1 = [];
对于(VAR I = 0; I< data2.length;我++){
   变种临时= {};
   对于(VAR Y = 0; Y< fields.length; Y ++){
      临时[域[Y] =数据2 [I] [Y]
   }
   data1.push(临时);
}


解决方案

我终于想到了一个不使用巢循环的有效途径! :)

  VAR栏= [姓名,年龄];
VAR DATA2 = [[约翰,20],[汤姆,25];
变种体=;对于(VAR I = 0; I< fields.length;我++){
   体= body.concat(这一点。+领域[I] += ARGS [+ I +];);
}VAR模型=新功能(ARGS体);变种DATA1 = [];
对于(VAR I = 0; I< data2.length;我++){
   变种x =新模式(数据2 [I]);
   data1.push(X);
}

Is it possible to create the the data1 array without using nested for loops?

// My starting Normalized data
var fields = ["name","age"];
var data2 = [["John",20],["Tom",25]]; 


// What I want the result to look like Denormalized
var data1 = [{"name":"John", "age":20},{"name":"Tom", "age":25}];


// My solution
var data1 = [];
for(var i = 0; i < data2.length; i++){
   var temp = {};
   for(var y = 0; y < fields.length; y++){
      temp[fields[y]] = data2[i][y];
   }
   data1.push(temp);
}

解决方案

I finally thought of an efficient way that doesn't use nest for loops! :)

var fields = ["name","age"];
var data2 = [["John",20],["Tom",25]]; 
var body = "";

for(var i = 0; i < fields.length; i++){
   body = body.concat("this."+fields[i] +"=args["+i+"]; ");
}

var model = new Function("args",body);

var data1 = [];
for(var i = 0; i < data2.length; i++){
   var x = new model(data2[i]);
   data1.push(x);
}

这篇关于有效的方法来从属性阵列和阵列匹配属性值的创建JavaScript对象的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆