问答题446/1593实现lodash的set和get方法

难度:
2023-10-25 创建

参考答案:

  • set 方法可以根据提供的路径(以点分隔)设置对象的值,如果路径上的嵌套对象不存在,则会递归创建。
  • get 方法会根据提供的路径获取对象中的值,如果路径上的某个键不存在或对象中断,返回 undefined

下面是提供的参考:

1function set(object, path, value) { 2 const keys = path.split('.'); 3 let current = object; 4 5 for (let i = 0; i < keys.length - 1; i++) { 6 const key = keys[i]; 7 if (!(key in current)) { 8 // Create nested objects if the key doesn't exist 9 current[key] = {}; 10 } 11 current = current[key]; 12 } 13 14 current[keys[keys.length - 1]] = value; 15} 16 17function get(object, path) { 18 const keys = path.split('.'); 19 let current = object; 20 21 for (const key of keys) { 22 if (typeof current !== 'object' || !(key in current)) { 23 return undefined; 24 } 25 current = current[key]; 26 } 27 28 return current; 29}

下面是使用的示例:

1const obj = { 2 foo: { 3 bar: { 4 baz: 'Hello, World!' 5 } 6 } 7}; 8 9set(obj, 'foo.bar.baz', 'New Value'); 10console.log(get(obj, 'foo.bar.baz')); // Output: New Value 11 12console.log(get(obj, 'foo.bar.qux')); // Output: undefined

最近更新时间:2023-10-30

赞赏支持

预览

题库维护不易,您的支持就是我们最大的动力!