You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript访问对象嵌套属性的更优实现方案

动态嵌套属性访问优化方案

核心实现思路

单独封装一个通用的嵌套属性取值函数,配合剩余参数语法获取属性路径,不需要判断参数数量即可支持任意层级的嵌套属性访问。

完整实现代码

var objectsArr = [
  {nestedobj:{property:'1'}},
  {nestedobj:{property:'3'}},
  {nestedobj:{property:'2'}},
  {nestedobj:{property:'4'}}
];

// 通用嵌套属性取值函数,支持任意层级属性访问
function getNestedValue(obj, propPath) {
  return propPath.reduce((curr, key) => curr?.[key], obj);
}

function sortObjectsArr(objectsArray, ...propPath) {
  objectsArray.sort((a,b) => {
    const valA = getNestedValue(a, propPath);
    const valB = getNestedValue(b, propPath);
    return valA - valB;
  });
}

sortObjectsArr(objectsArr, 'nestedobj', 'property');
console.log(objectsArr);

老环境兼容版本

如果运行环境不支持可选链和reduce语法,可以用循环实现取值逻辑:

function getNestedValue(obj, propPath) {
  let result = obj;
  for (let i = 0; i < propPath.length; i++) {
    if (result === null || result === undefined) {
      return undefined;
    }
    result = result[propPath[i]];
  }
  return result;
}

方案优势

  • 无需编写大量重复的参数判断逻辑,天然支持任意层级的嵌套属性访问
  • 增加了异常兼容逻辑,中间层级属性不存在时不会直接抛出运行时报错
  • 逻辑拆分清晰,属性取值逻辑可复用在其他业务场景中

内容的提问来源于stack exchange,提问作者Philipos D.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 08:09:03