简体   繁体   English

如何从数组字符串动态创建 JavaScript 中的对象键和值

[英]how to create Object key & value in JavaScript dynamically from array string

I want to create a JavaScript object dynamically from two arrays of strings.我想从两个字符串数组动态创建一个 JavaScript 对象。 One array is used for the key and another for the value.一个数组用于键,另一个用于值。 eg it should create * element.name="xyz";例如它应该创建 * element.name="xyz"; *etc *等等

 var key=["name","id","surname"];
 var value=[["xyz","01","abc"],["def","02","ghi"]]; 
 var element=new Object();

from the above value it should create an object like this:从上面的值它应该创建一个这样的对象:

    var element=new Object();
    element.name="xyz";
    element.id="01";
    element.surname="abc";

    var element =new Object();
    element.name="def";
    element.id="02";
    element.surname="ghi";

I would go like this :我会这样:

var value=[["xyz","01","abc"],["def","02","ghi"]]; // notice it's an array of array instead of an array of objects

var elements = [];

for (var i = 0; i< value.length; i++) {
    var elem = new Object();
    for (var j=0; j< key.length; j++) {
        elem[key[j]] = value[i][j];
    }
    elements.push(elem);
}

You can use map and reduce functions to get your result.您可以使用mapreduce函数来获得结果。 Map will flatten out array of arrays, and reduce will create object for each array Map 将扁平化数组数组,reduce 将为每个数组创建对象

 const key = ['name', 'id', 'surname'] const values = [ ['xyz', '01', 'abc'], ['def', '02', 'ghi'] ] const result = values.map(row => row.reduce((acc, cur, i) => (acc[key[i]] = cur, acc), {})) console.log(result)

Similar to the other answers but avoiding the inner loop:与其他答案类似,但避免了内循环:

var keys = ["name","id","surname"];
var values = [["xyz","01","abc"],["def","02","ghi"]]; // an array of arrays, not objects

function populateObjects(keys, values) {
  var arr = [];
  for (var i = 0, l = values.length; i < l; i++) {
    var obj = {};
    obj[keys[0]] = values[i][0];
    obj[keys[1]] = values[i][1];
    obj[keys[2]] = values[i][2];
    arr.push(obj);
  }
  return arr;   
}

var arr = populateObjects(keys, values);
console.log(arr);

Create dynamic object using this使用此创建动态对象

    let featureConfigsData: any = {};
    // let featureConfigsData = new Object();

    if (feature_configs) {
      feature_configs.map((item: any, index: number) => {
        featureConfigsData["" + item.name + ""] = item.value;
      });
      console.log("K_____  ", featureConfigsData);
    }

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM