function setDescendantProp(obj, desc, fun) {
const arr = desc.split('.');
let prop = arr.shift();
// 循环路径赋值
while (arr.length){
if(!obj[prop]){
obj[prop] = {};
}
// eslint-disable-next-line no-param-reassign
obj = obj[prop]
prop = arr.shift();
}
obj[prop] = fun;
}
path:目标位置
value:目标值
obj:目标
function editFn(path, value, obj) {
const arr = path.split('.')
const len = arr.length - 1
arr.reduce((cur, key, index) => {
if (!(cur[key]))
throw `${key} 不存在!`
if (index === len) {
cur[key] = value
}
return cur[key]
}, obj)
}
简单的while循环set Object 属性 (有则合并,无则创建)
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 我们先定义一个对象,这个对象有原型上的属性,有不可枚举属性,有可枚举属性 for in可以循环出所有的可枚举属性,...
- 引言 最近比较忙导致这篇拖了好久啊,第二篇的作用域和闭包因为其中一部分没搞得很清楚也很难受,决定不和自己钻牛角尖了...
- ES6 允许字面量定义对象时,用表达式作为对象的属性名,即把表达式放在方括号内,这样就可以循环出自定义属性名,并把...
- 在上一关,我们认识了while循环。 在这关,我们继续熟悉它。 角色的任务很简单,就是向前走,直到走不下去。 那就...
- for...in循环是遍历对象的每一个可枚举属性,包括原型链上面的可枚举属性。 Object.keys()只是遍历...