Как создать объект из одномерного массива и статической строки - PullRequest
0 голосов
/ 30 мая 2018

Мне нужен объект типа

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;

но я не могу передать это как целый объект в мой код.когда я его преобразую в строку, он возвращает

output

{
    '0':"[{
        key: "ABC",
        name: true,
        dob: true
    },{
        key: "CDE",
        name: true,
        dob: true
    }]"
}

Ответы [ 4 ]

0 голосов
/ 30 мая 2018

Это еще один способ генерации этого выходного объекта с использованием 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))

Надеюсь, это поможет вам:)

0 голосов
/ 30 мая 2018

использование 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);
0 голосов
/ 30 мая 2018

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

let obj = {};

arr.forEach(x=> {
  obj[x] = {
    name: true,
    dob: true
  }  
});

console.log(obj)

Цикл по массиву, для каждого элемента используйте его в качестве ключа и добавьте объект в качестве значения

0 голосов
/ 30 мая 2018

Вы можете использовать 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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...