代码之家  ›  专栏  ›  技术社区  ›  Kirankumar Dafda

如何从一维数组和静态字符串创建对象

  •  2
  • Kirankumar Dafda  · 技术社区  · 8 年前

    我想要一个像

    var obj = {
        "ABC" : { name: true, dob: true},
        "CDE" : { name: true, dob: true},
        "EFG" : { name: true, dob: true},
        "CBA" : { name: true, dob: true},
        "XYZ" : { name: true, dob: true},
    }
    

    目前我只有

    var arr = ["ABC","CDE","EFG","CBA","XYZ"];
    

    我试过用

    newArray.push({
        key: arr[i],
        name: true,
        dob: true
    });
    
    var newObj = {}
    
    newObj[i] = newArray;
    

    但我不能把它作为一个整体传递给我的代码。当我把这个串起来的时候

    输出

    {
        '0':"[{
            key: "ABC",
            name: true,
            dob: true
        },{
            key: "CDE",
            name: true,
            dob: true
        }]"
    }
    
    4 回复  |  直到 8 年前
        1
  •  4
  •   Eddie    8 年前

    你可以用 Object.assign 创建一个对象。使用扩展运算符和 map 重申阵型。

    var arr = ["ABC", "CDE", "EFG", "CBA", "XYZ"];
    
    var obj = Object.assign(...arr.map(o => ({[o]: {name: true,dob: true}})));
    console.log(obj);

    另一个选择是使用 reduce 将数组转换为有效对象。

    var arr = ["ABC", "CDE", "EFG", "CBA", "XYZ"];
    var obj = arr.reduce((c, v) => Object.assign(c, {[v]: {name: true,dob: true}}), {});
    
    console.log(obj);
        2
  •  1
  •   Nikhil Aggarwal    8 年前

    使用 Array.reduce

    var arr = ["ABC","CDE","EFG","CBA","XYZ"];
    
    var result = arr.reduce((a,c) => {
    a[c] = {name: true, dob: true};
    return a;
    }, {});
    
    console.log(result);
        3
  •  1
  •   Isaac    8 年前

    var arr = ["ABC","CDE","EFG","CBA","XYZ"];
    
    let obj = {};
    
    arr.forEach(x=> {
      obj[x] = {
        name: true,
        dob: true
      }  
    });
    
    console.log(obj)

    循环遍历数组,对于每个元素,使用它作为键并添加一个对象作为值

        4
  •  0
  •   Bharath    8 年前

    这是使用json.parse()生成输出对象的另一种方法。

    var objStr = '{'
    var arr = ["ABC", "CDE", "EFG", "CBA", "XYZ"], 
        propertyValue = ':{"name":true,"dob":true}'
    
    		for (var x in arr) {
    			if (x < arr.length - 1)
    				objStr += '"' + arr[x] + '"' + propertyValue + ','
    			else
    				objStr += '"' + arr[x] + '"' + propertyValue
    		}
    		objStr += '}'
    
    		
    console.log(JSON.parse(objStr))

    希望这对你有帮助:)