以下为ChatGPT自动生成的解答,正确与否请自行判断。 也许你也可以从大家的发帖中找到想要的答案!

BFE.devAI解答 - JavaScript 代码题
85. 实现 `_.get()`

实现 get() 的思路:

  1. 先将第二个参数转成数组格式,数组里面的元素就是要获取的属性名或者下标值。
  2. 再遍历数组,通过 obj[curr] 的方式依次访问对象或者数组中的属性值(当然要加一些判断)。
  3. 如果最终取到的值为 undefined,则返回第三个参数。

根据以上思路,可以写出以下代码实现 get()

function get(obj, path, defaultValue) {  // 将路径参数转成数组格式  const fields = Array.isArray(path) ? path : path.split(/[.[\]]+/g).filter(Boolean);  // 遍历每一个属性名或下标值  for (let i = 0; i < fields.length; i++) {    // 当前属性名或下标值    const curr = fields[i];    // 如果当前值不是对象,则无法获取子属性,直接返回默认值    if (!obj || typeof obj !== 'object') {      return defaultValue;    }    // 如果当前值是数组,则获取数组中指定下标的元素    if (Array.isArray(obj) && /^\d+$/.test(curr)) {      obj = obj[parseInt(curr)];    }    // 否则,获取对象中的指定属性值    else {      obj = obj[curr];    }  }  // 如果获取到的值为 undefined,则返回默认值  return obj === undefined ? defaultValue : obj;}const obj = {  a: {    b: {      c: [1,2,3]    }  }}console.log(get(obj, 'a.b.c')); // [1,2,3]console.log(get(obj, 'a.b.c.0')); // 1console.log(get(obj, 'a.b.c[1]')); // 2console.log(get(obj, ['a', 'b', 'c', '2'])); // 3console.log(get(obj, 'a.b.c[3]')); // undefinedconsole.log(get(obj, 'a.c', 'bfe')); // 'bfe'

输出结果与预期一致,说明 get() 方法实现成功。