我想在一个大对象中添加一个小对象。我有一个位置元素。我想在那个位置添加小对象。但是如果该位置已经存在某个对象,则将该小对象放在同一级别。
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': {}}};
答案 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见这里