2015-07-09 2 views
0

Я добавляю настраиваемое свойство к моему JSON, но в конце он создает дубликат! Один из них содержит мое собственное имя свойства и другое без него.Добавление пользовательского свойства в JSON создает дубликат

var array = []; 
array.push([]); 
var parentKey = "HELLO"; 
array[array.length - 1].push(array[array.length - 1].parent = parentKey); 
console.log(array); 

JSFIDDLE

Таким образом, в конце концов, я хочу получить:

[ 
    [ 
      "Parent": "Hello" 
    ] 
] 
+2

Показать результаты, которые вы хотите получить? –

+0

Итак, вы пытаетесь добавить объект к массиву, так что в итоге вы получите «[{« say »:« HELLO »}]' –

+3

Это не JSON. Это просто массивы и объекты javascript. – forgivenson

ответ

1

Ваш код:

array = [[]] 
array[array.length - 1].push(array[array.length - 1].parent = parentKey); 

создает следующий объект:

[ [ 'HELLO', parent: 'HELLO' ] ] 

Однако проблема это вы методом форсированной() с назначением в качестве параметра, который выполняет задание, а затем добавляет возвращаемое значение задания (которое является собственностью) в массив, что причина для дубликата, который вы видите.

Правильный путь для создания объекта JSON является:

array = [[]] 
array[array.length - 1].parent = parentKey; 

, который дает:

[ [ parent: 'HELLO' ] ] 

ПРИМЕЧАНИЕ:

Как указал также на Juhana ниже, (не зная ваш контекст использования), если вы хотите создать массив объектов JSON, то наиболее правильным является следующее:

array = [{}] 
array[array.length - 1].parent = parentKey; 
+0

Спасибо! Это правильный ответ. – Danielok1993

+0

Вы используете массив, когда вы должны использовать объект. Это должно быть 'array = [{}]'. – JJJ

3

array[array.length - 1].push(array[array.length - 1].parent = parentKey);

The (array[array.length - 1].parent = parentKey) не возвращается, что array[array.length - 1], вместо этого, он возвращает parentKey.

Так

array[array.length - 1].push(array[array.length - 1].parent = parentKey); 

равно

var item = array[array.length - 1].parent = parentKey; // item becomes "HELLO" here 
array[array.length - 1].push(item); 

Таким образом, вы просто присвоить Назначьте свойство parent с "HELLO" к array[array.length - 1], а затем нажмите кнопку "Hello" в array[array.length - 1].

Это не дубликат.

И к тому, что вы ожидаете, вы должны написать:

var array = []; 
array.push({}); // Push object to here 
var parentKey = "HELLO"; 
array[array.length - 1].parent = parentKey; 
console.log(array); 
Смежные вопросы