RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / 问题 / 1551114
Accepted
drako black
drako black
Asked:2023-11-13 16:58:32 +0000 UTC2023-11-13 16:58:32 +0000 UTC 2023-11-13 16:58:32 +0000 UTC

使用 js 对象中的对象

  • 772

朋友们,我需要帮助来弄清楚如何使用多个对象,否则我会完全困惑,不明白做什么以及如何做。所以,我有一个对象:

let HERO = {
   name: '',
   age: 0,
   gender: 0,
}

还有另一个对象:

let PARTY = {
   qualyty: [],
   men: 0,
   woman: 0,
}

PARTY.qualyty[0] = HERO;

问题是,如何才能在将PARTY.qualyty对象添加到数组时,根据对象的属性自动计算HERO参数?我创建了一个执行计算的函数,但我不知道将它放在哪里,以便它在向数组添加新元素时自动工作并重新计算:PARTY.manPARTY.womangenderHERO

function Counter() {
      var result = 0;
      for (var i = 0; i < PARTY.qualyty.length; i++) {
        if (PARTY.qualyty[i].gender == 1) {
          result = result + 1;
        }
        return result;
      }

如何实施?这样您就不必在每次添加新对象时都调用该 HERO函数PARTY.qualyty?

=====

考虑到您的提示和澄清,我提出了以下目标:

let PEOPLE = {
    gender: 0,
    fraction: 0,
    race: 0,
    age: 0,
    socialStats: 0,
    work: 0,
};

let CASTLE = {
  social: {
    peopleTotal: [],
    freeMen: 0,
    freeFemale: 0,
    slaveMen: 0,
    slaveFemale: 0,
    children: 0,
    happy: 100,
    addPeople(people) {
      console.log('people', people);
      if (CASTLE.social.peopleTotal.length > 0) {
        for (var i = 0; i < CASTLE.social.peopleTotal.length; i++) {
          if (people.gender == 0 && people.socialStats == 1) {
            CASTLE.social.freeMen += 1;
          } else if (people.gender == 0 && people.socialStats == 0) {
            CASTLE.social.slaveMen += 1;
          } else if (people.gender == 1 && people.socialStats == 1) {
            CASTLE.social.freeFemale += 1;
          } else if (people.gender == 1 && people.socialStats == 0) {
            CASTLE.social.slaveFemale += 1;
          }
        }
      }

    }
  },
  laws: {
    taxes: 0,
    slavery: 0,
    drinking: 0,
  }
};

但是,当我尝试将 PEOPLE 对象分配给 CASTLE.social.peopleTotal 数组的零元素时,相应的计数器不会更新,也就是说,该函数要么根本不起作用,要么起作用,但不正确:

function getRandom(min, max) {
  min = Math.ceil(min);
  max = Math.floor(max);
  return Math.floor(Math.random() * (max - min + 1)) + min; //Максимум и минимум включаются
}

CASTLE.social.peopleTotal[0] = Object.assign({}, PEOPLE, { gender: getRandom(0, 1), fraction: getRandom(0, 6), race: getRandom(0, 4), age: getRandom(5, 60), socialStats: getRandom(0, 1), work: 0})
console.log('human: ', CASTLE.social.peopleTotal[0]);
console.log('free male: ', CASTLE.social.freeMen);
console.log('free female: ', CASTLE.social.freeFemale);
console.log('slave man: ', CASTLE.social.slaveMen);
console.log('slave female: ', CASTLE.social.slaveFemale);
javascript
  • 1 1 个回答
  • 44 Views

1 个回答

  • Voted
  1. Best Answer
    Grundy
    2023-11-13T17:21:22Z2023-11-13T17:21:22Z

    在问题的示例中,对象仅存储数据。因此,您需要自己更新所有字段

    PARTY.qualyty[0] = HERO;
    if (HERO.gender == 0){
        PARTY.men += 1;
    }else{
        PARTY.woman += 1;
    }
    

    为了不每次都写这个,把这段代码传给PARTY对象方法就够了

    let PARTY = {
       qualyty: [],
       men: 0,
       woman: 0,
       addQualyty(){
          PARTY.qualyty[0] = HERO;
          if (HERO.gender == 0){
              PARTY.men += 1;
          }else{
              PARTY.woman += 1;
          }       
       }
    }
    

    为了使其更加通用,您需要将要添加的对象添加到参数中,并将对 PARTY 对象的引用替换为this:

    addQualyty(hero){
       this.qualyty.push(hero);
       if (hero.gender == 0){
           this.men += 1;
       }else{
           this.woman += 1;
       }       
    }
    
    • 2

相关问题

  • 第二个 Instagram 按钮的 CSS 属性

  • 由于模糊,内容不可见

  • 弹出队列。消息显示不正确

  • 是否可以在 for 循环中插入提示?

  • 如何将 JSON 请求中的信息输出到数据表 Vuetify vue.js?

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    我看不懂措辞

    • 1 个回答
  • Marko Smith

    请求的模块“del”不提供名为“default”的导出

    • 3 个回答
  • Marko Smith

    "!+tab" 在 HTML 的 vs 代码中不起作用

    • 5 个回答
  • Marko Smith

    我正在尝试解决“猜词”的问题。Python

    • 2 个回答
  • Marko Smith

    可以使用哪些命令将当前指针移动到指定的提交而不更改工作目录中的文件?

    • 1 个回答
  • Marko Smith

    Python解析野莓

    • 1 个回答
  • Marko Smith

    问题:“警告:检查最新版本的 pip 时出错。”

    • 2 个回答
  • Marko Smith

    帮助编写一个用值填充变量的循环。解决这个问题

    • 2 个回答
  • Marko Smith

    尽管依赖数组为空,但在渲染上调用了 2 次 useEffect

    • 2 个回答
  • Marko Smith

    数据不通过 Telegram.WebApp.sendData 发送

    • 1 个回答
  • Martin Hope
    Alexandr_TT 2020年新年大赛! 2020-12-20 18:20:21 +0000 UTC
  • Martin Hope
    Alexandr_TT 圣诞树动画 2020-12-23 00:38:08 +0000 UTC
  • Martin Hope
    Air 究竟是什么标识了网站访问者? 2020-11-03 15:49:20 +0000 UTC
  • Martin Hope
    Qwertiy 号码显示 9223372036854775807 2020-07-11 18:16:49 +0000 UTC
  • Martin Hope
    user216109 如何为黑客设下陷阱,或充分击退攻击? 2020-05-10 02:22:52 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5