|
Как двум переменным за одно действие присвоить массив из двух элементов на 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
|
Ты не поверишь:
[a, b]=[1, 2]; https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Operators/Destructuring_assignment |
|||
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)Прошу прощения. Лениво всё читать. Ну хоть версия другая.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |