如何使用jQuery.map(或香草JS)递归修改嵌套对象?
// Original Object
var data = [{
name: 'Parent',
children: [{
name: 'Child',
children: [{
name: 'ChildChild'
}]
}]
}];
// Resulting Object
var data = [{
name: 'Parent',
text: 'Parent',
children: [{
name: 'Child',
text: 'Child',
children: [{
name: 'ChildChild',
text: 'ChildChild'
}]
}]
}];
我目前在jQuery.map之类的顶层中执行此操作,但不知道如何递归实现.
$.map(data, function(obj){
return $.extend(obj, {text: obj.name});
});
解决方法:
不要使用map()修改数组;它旨在创建数组的子集.要修改数组,请使用each()或任何其他标准循环机制.
考虑到这一点,在这种情况下,您可以使用$.each()遍历数组每个级别的对象.尝试这个:
function setText(arr) {
$.each(arr, function(i, obj) {
obj.text = obj.name;
if (obj.children && obj.children.length) {
setText(obj.children);
}
});
}
setText(data);
标签:javascript,jquery,recursion
来源: https://codeday.me/bug/20191027/1943064.html