Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   array to object (https://javascript.ru/forum/misc/85302-array-object.html)

od0201 16.06.2023 14:09

array to object
 
//не хочу так

let obj={}
let[a,b]=['1','2']
obj.a=a
obj.b=b


//хочу компактно, как-то так

let obj={}
[obj.a,obj.b]=['1','2']


спасибо

рони 16.06.2023 14:43

od0201,
а так?
let[a,b]=['1','2'];
let obj={a, b};

ksa 16.06.2023 15:09

Цитата:

Сообщение от od0201
не хочу так

Пример довольно странный...

Почему расхотел вот так, без "статического" массива?

const obj = {
   a: '1',
   b: '2'
}


Допустим есть массив...

const a = ['1', '2']
// тогда
const obj = {
   a: a[0],
   b: a[1]
}

ksa 16.06.2023 15:14

Пусть даже массив достаточно велик...

const a = ['1', '2', '3', '4', '5']
// тогда
const obj = ['a', 'b', 'c', 'd', 'f'].reduce((o, k, i) => (o[k] = a[i], o),{})
alert(JSON.stringify(obj))

Aetae 16.06.2023 15:20

Цитата:

Сообщение от od0201 (Сообщение 552410)
//хочу компактно, как-то так

let obj={}
[obj.a,obj.b]=['1','2']

Кто мешает? Хипстерская ненависть к точкам с запятой?

let obj={};
[obj.a,obj.b]=['1','2'];

console.log(obj);

od0201 16.06.2023 16:43

Цитата:

Сообщение от ksa (Сообщение 552414)
Пример довольно странный...

названия полей не совсем короткие и так много раз в процесе парсинга вебстраницы. Будет не читабельно, если название полей повторять больше одного раза, а так более именее
[res.descriptionMy,res.descriptionYour]=[...doc.querySelectorAll("table.text table.text2 div")].map(e=>e.textContent);
[res.name]=[...doc.querySelectorAll("title")].map(e=>e.textContent.split(":")[0]);


Цитата:

Сообщение от Aetae (Сообщение 552417)
Кто мешает? Хипстерская ненависть к точкам с запятой?

ага, спасибо, то что надо

Всем спасибо, было познавательно.

Aetae 16.06.2023 16:46

od0201, вообще у меня нет проектов где я бы не подключал сходу lodash, а потому проще это делать так:
let obj = zipObject(['a', 'b'], [1, 2]);

ksa 16.06.2023 17:17

Цитата:

Сообщение от od0201
а так более именее

Как для меня так уже слишком длинная строка...

Цитата:

Сообщение от od0201
[res.descriptionMy,res.descriptionYour]=[...doc.querySelectorAll("table.text table.text2 div")].map(e=>e.textContent);

Хотя бы так

const a = doc.querySelectorAll("table.text table.text2 div")
[res.descriptionMy,res.descriptionYour]=[...a].map(e=>e.textContent);


Часовой пояс GMT +3, время: 05:59.