Имя: Пароль:
IT
Веб-мастеринг
Как двум переменным за одно действие присвоить массив из двух элементов на JS?
0 D_Pavel
 
22.07.16
17:56
Как двум переменным за одно действие присвоить массив из двух элементов на JavaScript?

Есть массив: $myArray = [20, 30];

на перле можно было круто присвоить его переменным типа вот так:

($x, $y) = $myArray;

в итоге $x == 20, $y==30

На JavaScript существует что-то подобное?
1 Fragster
 
гуру
22.07.16
18:01
а зачем?
2 Fragster
 
гуру
22.07.16
18:02
ладно бы спрашивал, как у объекта в js сделать недоступные извне свойства и т.п., но это-то зачем?
3 D_Pavel
 
22.07.16
18:15
(1) Для программы нужно

(2) Для меня сложные вопросы на которые мало кто знает ответ спрашивать гораздо интереснее чем очевидные.
4 Fragster
 
гуру
22.07.16
18:19
var a = b = 10 работает
5 Fragster
 
гуру
22.07.16
18:19
но вообще фу так писать. технологической необходимости нет, а читается хуже
6 D_Pavel
 
22.07.16
18:32
Это ты точно подметил!

А на мой вопрос кто-нибудь ответит?
7 Fragster
 
гуру
22.07.16
18:36
(6) в пятницу совсем туго? см. (4)
8 Garykom
 
гуру
22.07.16
18:39
(7) он разные значения хочет присвоить которые через зпт как для массива
9 Fragster
 
гуру
22.07.16
18:43
(8) а, разглядел. все равно не понимаю. все равно не понимаю, зачем спрашивать то, что не предусмотрено синтаксисом?

ну, можно свою функцию из 3 строк написать, у которой будет первый аргумент - массив, а дальше список переменных, в которые по индексу будут значения из массива складываться.
https://habrahabr.ru/post/117868/
10 Рэйв
 
22.07.16
18:46
(0) и все это тебе предоставляет оператор  =

А ты ему даже спасибо не сказал.
11 Asmody
 
22.07.16
18:51
12 Asmody
 
22.07.16
18:53
(11)+ там в конце статьи две очень важные таблички
13 Карупян
 
22.07.16
18:54
получается нода тоже не поддреживает, как и хром
14 Fragster
 
гуру
22.07.16
19:12
(13) проверил в хроме - работает
15 Asmody
 
22.07.16
19:18
(13) в ноде есть поддержка ES6
16 Garykom
 
гуру
22.07.16
19:21
(13) нода она разных версий бывает
Там столкнулся уже с совместимостью старого кода на новых нодах
17 Jija Grenkov
 
22.07.16
19:46
Babel есть для тех у кого не поддерживает es6
18 D_Pavel
 
23.07.16
17:09
(11) Хоть один знающий человек зашел в тему. Спасибо!
19 D_Pavel
 
24.07.16
19:41
ЗЫ: В хроме работает не смотря на табличку.
Темку можно закрыть.
20 D_Pavel
 
25.07.16
07:09
Подниму тему. Новый вопрос. Не пойму как тем же способом сделать такое присваивание:

есть массив из пары элементов:
arrPair = ['Яблоки', '100 рублей'];

нужно добавить этот массив деструктурирующим присваиванием в хэш, чтобы получилось:
hashPriceList['Яблоки'] = '100 рублей';
21 orefkov
 
25.07.16
08:59
hashPriceList[arrPair[0]] = arrPair[1]
22 Asmody
 
25.07.16
09:36
на ES6

(([a,b])=>({[a]:b}))(['Яблоки','100 руб'])
23 D_Pavel
 
25.07.16
10:24
(21) Не то

(22) Круто, так получается новый объект {Яблоки: "100 руб"}, а мну нужно добавить к существующему хэшу.

Дано:
['Яблоки', '100 рублей']
var hashPriceList = [];

Получить:
hashPriceList['Яблоки'] == '100 рублей'
24 Asmody
 
25.07.16
10:32
(23) оберни еще в одну лямбду, делов-то!

q={'qwe':1,'asd':2,'zxc':3};
w=['qwe',3];
(o=>(([a,b])=>(o[[a]]=b)))(q)(w);

Но это какой-то write-only код. Как упражнение хорош, но реально так писать не надо.
25 Asmody
 
25.07.16
10:35
+ Ты уже завтра забудешь, сколько магии работает в третьей строке.
26 D_Pavel
 
25.07.16
10:53
(24) Чотко! Спасибо, работает
27 orefkov
 
25.07.16
11:15
(23)
Горе от ума, имхо.
28 Serginio1
 
25.07.16
11:19
29 D_Pavel
 
25.07.16
11:27
(28) Круто, спасибо! То что надо
30 Serginio1
 
25.07.16
11:30
Только это относится к ES6
http://exploringjs.com/es6/ch_destructuring.html
31 Fragster
 
гуру
25.07.16
11:35
(20) ты там экзамен сдаешь, или на работу устраиваешься?
(25) прав, и лучше написать прям хорошую и понятную функцию из одной строки без "деструктивного присваивания", ибо оно нафиг тут не нужно. Например как в (21). Все просто и понятно. И через год останется также просто и понятно.
32 Serginio1
 
25.07.16
11:49
(31) Ну именованные кортежи даже в C# 7 появятся
https://msdn.microsoft.com/ru-ru/magazine/mt595758.aspx
33 Asmody
 
25.07.16
12:03
(28) Ты опять всё проспал. Это ещё в (11) и по-русски.
34 Asmody
 
25.07.16
12:05
(31) Как там в питоне? "Явное лучше неявного, простое лучше сложного"?
35 Asmody
 
25.07.16
12:10
Вроде даже в 3м питоне выпилили деструктивное определение параметров функций.
36 Serginio1
 
25.07.16
12:17
(33) Ну TC то его и не заметил. Не только я.
37 D_Pavel
 
26.07.16
08:06
(33) В 11 какая-то старая русская версия. Более новая и по-английски как раз в (28)
38 D_Pavel
 
26.07.16
08:09
(36) смотри внимательнее (18)
39 Serginio1
 
26.07.16
08:22
(33,38)Прошу прощения. Лениво всё читать. Ну хоть версия другая.