【发布时间】:2020-07-02 16:46:29
【问题描述】:
在一次采访中,我有一个有趣的 javascript-task:
给定代码:
const testStr = "bar.baz.foo:111222", testObj = { bar: { baz: { foo: 333444, foo2: 674654 }, boo: { faa: 11 } }, fee: 333 }; function replaceInObj(obj, str) { // your code }编写
replaceInObj函数的实现
- 我不被允许使用 3rd-party 库。
- 我完成了任务,但对我的解决方案不满意。
- 我正在为复杂的实现而苦苦挣扎。
- 同时我自己也找不到其他解决方案。
我对@987654325@函数的实现
const testStr = 'bar.baz.foo:111222';
const testObj = {
bar: {
baz: {
foo: 333444,
foo2: 674654,
},
boo: {
faa: 11,
},
},
fee: 333,
};
console.log('[before] testObj.bar.baz =', testObj.bar.baz);
// run
replaceInObj(testObj, testStr);
console.log('[after] testObj.bar.baz =', testObj.bar.baz);
function replaceInObj(obj, str) {
const [path, valueToChange] = str.split(':');
path.split('.').reduce((acc, prop, index, arr) => {
const isLastProp = arr.length === index + 1;
if (isLastProp) {
acc[prop] = valueToChange;
}
return acc[prop];
}, obj);
}
你将如何实现函数replaceInObj?
- 我希望有更简单的实现。
- 如果您能分享您的解决方案,我将不胜感激
【问题讨论】:
-
关于从最佳实践、效率、可读性等方面改进工作代码的问题...更适合Code Review。任何人想要怎么做,见仁见智。
-
哦,谢谢!不知道甚至存在这样的平台 - 到时候将其发布到代码审查!
-
"你将如何实现这个功能?" - 用正确的关键字搜索一下,你会发现成千上万的替代解决方案来完成这个非常常见的任务,包括@987654322 @
标签: javascript testing task