Pytanie Klucze dynamiczne w języku JavaScript Tablica asocjacyjna deklarująca jeden wiersz


Spodziewam się, że następujące trzy tablice asocjacyjne będą identyczne:

arr1 = { "dynamic":"foo", "bar":"baz" };

key = "dynamic";    
arr2 = { key:"foo", "bar":"baz" };

arr3 = {};
arr3[key] = "foo";
arr3["bar"] = "baz";

W powyższych przykładach arr1 i arr3 są takie same, ale arr2 jest inny.

Czy możliwe jest użycie kluczy dynamicznych w deklaracji tablicy asocjacyjnej javascript?


11
2017-07-24 17:06


pochodzenie


Nie, nie możesz używać zmiennych jako kluczy w deklaracji literalnej obiektu. - Musa
No - Bergi
duplikat Używanie zmiennej dla klucza obiektu JavaScript (i wiele innych) - Bergi


Odpowiedzi:


Tylko [] Składnia działa dla kluczy dynamicznych. Nie można ich używać w dosłownym znaczeniu. Twoja odpowiedź brzmi: nie, to niemożliwe.

Ale można użyć literału, aby utworzyć wszystkie klucze statyczne, a następnie dodać dynamiczne za pomocą [] składnia. To zwykle jest ładniejsze niż używanie . lub [] notacja dla wszystko elementy.


5
2017-07-24 17:08





To jest teraz możliwe użycie kluczy dynamicznych w deklaracji obiektu javascript, w dowolnej przeglądarce / platformie obsługującej skrypty literowe ES6:

key = "dynamic";    
arr2 = {
    [key]: "foo",  // "dynamic": "foo"
    "bar": "baz"
};

3
2017-08-03 15:26





Znalazłem rozwiązanie tego problemu.

Wykonaj następujące czynności:

var field='name';

var ourVar={};

ourVar[field] = 'Somethig';

Źródło: JavaScript: zmienna jako klucz tablicy


1
2017-12-31 08:01





Ponieważ poprosiłeś o jeden liniowiec, spróbuj tego:

var key = 'dynamic', obj = (function(o) { o[key]='foo'; return o;})({bar: 'baz'});

To sprawi obj równy {bar: "baz", dynamic: "foo"}


0
2018-01-10 10:48