2016-08-23 1 views
0

Я использую xml2js преобразовать xml в js объект и добавить новые узлы к содержаниюДобавление свойства объекта JSON в JavaScript,

Ex1: 
<abc> 
    <my-node>123</my-node> 
    <my-node>456</my-node> 
</abc> 


Ex2: 
<abc> 
    <my-node>123</my-node> 
</abc> 

В Ex1, то my-node свойства будет массивом, тогда как в Ex2, это будет элемент без массива.

Как добавить дополнительно my-node к тому же. Я могу сделать в формате ниже, но ищет лучшее решение?

if(typeof abc.my-node == Array){ 
    abc.my-node.push(xxx); 
} else { 
    //create empty array 
    //add existing element 
    //add xxx 
    //set the array to json object 
} 

ответ

1

Если вы используете

function addProp(obj, propName, value) { 
 
    if (propName in obj) { 
 
    if (obj[propName] instanceof Array) { 
 
     obj[propName].push(value); 
 
    } 
 
    else if (typeof obj[propName] !== 'object') { 
 
     obj[propName] = [obj[propName], value]; 
 
    } 
 
    } 
 
    else { 
 
    obj[propName] = value; 
 
    } 
 
} 
 

 
var abc = {}; 
 
console.log(JSON.stringify(abc)); 
 
addProp(abc, 'my-node', 123); 
 
console.log(JSON.stringify(abc)); 
 
addProp(abc, 'my-node', 456); 
 
console.log(JSON.stringify(abc)); 
 
addProp(abc, 'my-node', 789); 
 
console.log(JSON.stringify(abc));

то результат

{} 
{"my-node":123} 
{"my-node":[123,456]} 
{"my-node":[123,456,789]} 
+0

в основном это переработан метод;) – Reddy