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()只是遍历...