2015-11-09 2 views
0

Я ищу, чтобы добавить массив значений в массив в объекте, но по какой-то причине структура выглядит неправильно.Добавление значений в массив JavaScript

Я начинаю с пустым объектом:

var title = "name"; 
var kw = "fashion"; 

objectName = {[title]: [] }; 

Я задвиньте строку в массив:

objectName[title].push(kw); 

Однако, когда я console.logobjectName, я получаю следующий скриншот:

enter image description here

I хотелось бы иметь следующую структуру:

{"name":["Item 1", "Item 2", "Item 3", "Item 4"]} 

Я строю массив неправильно? Я просто смущен, почему имя свойства (utm_term [assisting]) появляется под массивом.

+0

Это не имеет никакого отношения к JSON. JSON - текстовая нотация для обмена данными. Если вы имеете дело с исходным кодом JavaScript и не имеете дело с * строкой *, вы не имеете дело с JSON. –

+0

Является ли свойство в объекте, которое должно называться 'title' или' name' (или 'utm_term', или' assisting')? –

ответ

1

Если свойство должно быть названо name (значение из title), то ваш код будет штраф в ES2015 + (новый стандартный JavaScript с июня), но вы, вероятно, использовать его в ES5 или ранее поскольку это то, что в настоящее время поддерживает большинство движков JavaScript.

В этом случае вам нужно разбить objectName инициализацию на две части:

objectName = {}; 
objectName[title] = []; 

Например:

var title = "name"; 
 
var kw = "fashion"; 
 

 
var objectName = {}; 
 
objectName[title] = []; 
 

 
objectName[title].push(kw); 
 

 
snippet.log(JSON.stringify(objectName, null, 2)); // Just using JSON for output display
<!-- Script provides the `snippet` object, see http://meta.stackexchange.com/a/242144/134069 --> 
 
<script src="//tjcrowder.github.io/simple-snippets-console/snippet.js"></script>

(я предполагаю, что вы объявили о objectName переменная где-то. Если нет, обязательно добавьте var, который я добавил выше, othe по вашему, вы становитесь жертвой The Horror of Implicit Globals.)

Смежные вопросы