javascript - 递归修补值切割一些数据
问题描述
我将构建可以帮助我修补原始值的函数。我将举出例子来更清楚地表达想法。
这是我的真实对象
let a = {
a: 'a',
b: 'b',
c: [1,2,3],
d: {
e: 'e',
f: 'f'
}
};
但是我想更改a.d
为{e: 'e', f: 'ff'}
因此我创建了函数并且它部分有效。我的意思是当我跑步时
saveValues({f: 'ff'}, a.d);
一切都很好。但是这条线不起作用
saveValues({d: {f: 'ff'}}, a);
当然把f改成ff,还要删e
let saveValues = (values: {[key: string]: any}, obj: any) => {
Object.keys(values).forEach((key: any) => {
if((obj as Object).hasOwnProperty(key)){
if(typeof obj[key] == 'object')
{
saveValues(values[key], obj[key]);
}
obj[key] = values[key];
}
})
};
实时代码:点击
解决方案
if(typeof obj[key] == 'object') {
saveValues(values[key], obj[key]);
} else {
obj[key] = values[key];
}
如果该值是一个对象,则不要为其赋值,而只能递归地进行。
推荐阅读
- python - Pandas 中不成比例的分层抽样
- javascript - 为什么我的谷歌网络应用程序无法在 Safari 中加载到我的谷歌网站上?
- java - 文件提前结束 - XWPFDocument 到 PDFConverter
- neural-network - 彩票假设 - 迭代修剪
- php - Laravel - WhereRaw CAST 查询在 while 循环中不起作用
- javascript - React Hooks 使用多个键更改对象的单个值而不重复
- reactjs - 使用动态导入将 fontawesome 移动到自己的包
- javascript - angular observables subscripe
- php - 搜索字符串时 in_array 总是返回 false
- vba - 如果选择了组外的另一个选项按钮,则取消选择整个选项按钮组