在嵌套对象中添加对象

时间:2017-01-08 04:51:38

标签: javascript jquery object

我想在一个大对象中添加一个小对象。我有一个位置元素。我想在那个位置添加小对象。但是如果该位置已经存在某个对象,则将该小对象放在同一级别。

var object = { 'mcq': { 'options1': { 'image': { 'contact': {}}}, 'options2': {}, 'options3': {}}};

var position = "mcq.options1.image";
var add_element = {"number": {}};

//   output should be like this :
var object = { 'mcq': { 'options1': { 'image': { 'contact': {}, 'number': {}}}, 'options2': {}, 'options3': {}}};

2 个答案:

答案 0 :(得分:0)

评论中对问题的更新答案

// Recursive function to traverse the object and set key and value of the new object param passed
function setValue(obj,path,add_element){
    if (typeof(path)=='string'){
        path = path.split('.');
    }
    if (path.length > 1){
        setValue(obj[path.shift()], path, add_element);
    }else{
        obj[path[0]][Object.keys(add_element)[0]] = add_element[Object.keys(add_element)[0]];
    }
}

var object = { 'mcq': { 'options1': { 'image': { 'contact': {}}}, 'options2': {}, 'options3': {}}};
var position = "mcq.options1.image";
var add_element = {"number": {}};

setValue(object, position, add_element);

console.log(object);

上一个答案

只需将小对象添加为现有对象的新参数即可。如下所示添加时,如果对象键已存在,则将覆盖该值,如果该值不存在,则将添加到与新键相同的级别。

object.mcq.options1.image.number = {};

var object = { 'mcq': { 'options1': { 'image': { 'contact': {}}}, 'options2': {}, 'options3': {}}};

console.log(object);

object.mcq.options1.image.number = {};

console.log(object);

答案 1 :(得分:0)

试试这个......

<script>
var object = { 'mcq': { 'options1': { 'image': { 'contact': {}}}, 'options2': {}, 'options3': {}}};

var position = "mcq.options1.image";
var add_element = {"number": {}};
console.log(object);
//output should be like this:
object.mcq.options1.image.new = add_element;
console.log(object);

</script>

小提琴...... http://www.w3schools.com/code/tryit.asp?filename=FBJ62BGIT3E9见这里