【问题标题】:How can i get both object length together from chain of object我怎样才能从对象链中获得两个对象长度
【发布时间】:2019-09-07 17:13:11
【问题描述】:

假设我创建一个对象如下

const myObj1 = {
    firstName: "Shaheb",
    lastName: "Ali",
    professions:"Web Developer"
}

并用上面的对象创建另一个对象作为原型对象添加

const myObj2 = Object.create(myObj1, {
    age:{
      value:33
    },
    edu:{
      value: "MBA"
    }
});

现在我想同时计算两个对象的长度,我该怎么做?

【问题讨论】:

  • 您的两个对象都没有.length。你到底要数什么?预期的结果是什么?
  • 对象真的没有长度,我想你想计算键的数量但是在这种情况下你可以使用Object.keys(myObj2).length
  • @shaheb 我的建议有帮助吗?
  • @shaheb 不,它不显示 0,因为(某些)键在原型上。它显示为 0,因为 myObj2 自己的键是 not enumerable
  • @shaheb 你不想要使用Object.create 的动态原型继承吗?顺便说一句,仅仅因为您的 size 函数不计算它们并不意味着您不能访问这些属性。 myObj2.lastNamemyObj2.edu 工作得很好。

标签: javascript object prototype


【解决方案1】:

我了解您想要获取对象中所有键的计数。由于没有可用于对象的length 属性(仅适用于数组),您应该使用Object.keys(),它返回一个包含所有键的数组:

const myObj1 = {
    firstName: "Shaheb",
    lastName: "Ali",
    professions:"Web Developer"
}
Object.keys(myObj1).length; // would return '3'

我相信你实际上想使用Object.assign()而不是Object.create(),这会将myObj1中的所有键分配给myObj2

const myObj1 = {
    firstName: "Shaheb",
    lastName: "Ali",
    professions:"Web Developer"
}

const myObj2 = {
    age:{
      value:33
    },
    edu:{
      value: "MBA"
    }
}

Object.assign(myObj2, myObj1);
document.write(Object.keys(myObj2).length + '<br>'); // return '5'
document.write(Object.keys(myObj1).length); // return '3'

【讨论】:

  • 这对我来说是为了得到对象的让步,谢谢你的帮助
  • @shaheb 你指的是哪条评论,带有 Object.size 功能的评论?
【解决方案2】:

如果我理解 OP 目标:

const myObj1 = {
    firstName: "Shaheb",
    lastName: "Ali",
    professions:"Web Developer"
}

const myObj2 = {
    age:{
      value:33
    },
    edu:{
      value: "MBA"
    }
};

const result = {...myObj1, ...myObj2};
console.log(result);

const length = Object.keys(result).length;
console.log(length);

{ firstName: 'Shaheb',
姓氏:“阿里”,
专业:“网络开发人员”,
年龄:{值:33},
教育:{价值:'MBA'} }

5

【讨论】:

    【解决方案3】:

    const obj = Object.create(myObj1, myObj2); 创建原型对象如下所示

    {年龄:33,学历:“MBA”} 年龄:33 教育:“MBA” 原型: 名字:“沙赫布” 姓氏:“阿里” 专业:“网络开发人员” 原型:对象

    但分配一个对象就像将 2 个对象合二为一。这不可能从计划对象和原型对象中获得长度吗?

    但是你的回答很棒,帮我很多,让它更好地理解。如果不可能,我会听从你的建议。

    【讨论】:

      猜你喜欢
      • 2020-12-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-02-24
      • 1970-01-01
      • 2016-08-28
      相关资源
      最近更新 更多