首页 > 解决方案 > 递归修补值切割一些数据

问题描述

我将构建可以帮助我修补原始值的函数。我将举出例子来更清楚地表达想法。

这是我的真实对象

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];
        }
    })
};

实时代码:点击

标签: javascripttypescript

解决方案


 if(typeof obj[key] == 'object') {
   saveValues(values[key], obj[key]);
 } else {
   obj[key] = values[key];
 }

如果该值是一个对象,则不要为其赋值,而只能递归地进行。


推荐阅读