/**
*
* @param {Object} obj //原数据
* @param {*} value //替换前的值
* @param {*} replace //替换后的值
* @return {Object} //替换后的数据
*/
function replaceObjData(obj, value, replace) {
//判断类型
if (typeof obj === 'object') {
// 数组(不要用for in)
if (Array.isArray(obj)) {
console.log(obj, '是数组')
for (let i = 0; i < obj.length; i++) {
obj[i] = replaceObjData(obj[i], value, replace);
}
} else {
console.log(obj, '是对象')
for (let key in obj) {
obj[key] = replaceObjData(obj[key], value, replace);
}
}
return obj
} else {
return obj = obj === value ? replace : obj;
}
}
let obj = {a: 'a1',b: 'a1',c: ['a1', 'a1']}
//将以上数据的value'a1'全部替换成'b1'
let res= replaceObjData(obj,'a1','b1')
console.log(res) //{a: 'b1',b: 'b1',c: ['b1', 'b1']}
js递归替换object嵌套的指定value
于 2021-02-04 17:28:14 首次发布