js 获取 obj 中指定的属性值

2019-09-24  本文已影响0人  RQrry

给定 javascript 对象

const obj = {
  a: {
    b: {
      c: {
        d: {
          e: 1
        }
      }
    }
  }
};

编写一个函数获取 obj 中指定的属性值

const getValue = function (obj, str) {
  if (typeof str !== 'string') {
    return '参数类型错误';
  }
  const index = str.indexOf('.');
  if (index < 0) {
    if (!obj[str]) {
      return '没有对应的属性值';
    } else {
      return obj[str];
    }
  }
  const preStr = str.slice(0, index);
  const restStr = str.slice(index + 1);
  if (obj[preStr]) {
    return getValue(obj[preStr], restStr);
  } else {
    return '没有对应的属性值';
  }
}

console.log(getValue(obj, 1)); // 参数类型错误
console.log(getValue(obj, 'a.b.c.d.e')); // 1
console.log(getValue(obj, 'a.b.c')); // { d: { e: 1 } }
console.log(getValue(obj, 'a')); // { b: { c: { d: [Object] } } }
console.log(getValue(obj, 'x')); // 没有对应的属性值
console.log(getValue(obj, 'a.x')); // 没有对应的属性值
console.log(getValue(obj, 'a.x.b')); // 没有对应的属性值
上一篇 下一篇

猜你喜欢

热点阅读