首页 > 解决方案 > 无法替换 if 语句中的对象值

问题描述

我正在为论坛制作教程,实际上在制作时卡住了!如果为真,如何在我的第一个 if 语句中将字符串 'Uber' 应用于 groupIs?这行不通。谢谢 :)

var User = function(username, groupIs, warnings, postCount) {
    this.username = username;
    this.groupIs = groupIs;
    this.warnings = warnings;
    this.postCount = postCount;
}

var worker = new User('Worker', 'Uber', 0, 1500);
var normalMember = new User('ImAnormalMember', 'normal', 0, 2000);
var l33tMember = new User('l33tboy', 'L33t', 0, 800);
var $3picmemberRIP = new User('epicMember', '3pic', 20, 800);



function upgradeChecker(member, group, warning, posts) {

    if ((group != 'Uber' && posts > 1000) && warning === 0) {

       console.log(member + ' Congrats on Uber !');
       group = "Uber";
    } else if (posts < 1000 && warning === 0) {
        console.log(member + ' You have ' + posts + ' posts, you do not meet the requirements');

    } else if (warning != 0 && posts > 1000) {
        console.log(member + ' You cannot upgrade with ' + warning + ' warning')
    } else if (posts < 1000 && warning != 0) {
        console.log(member + ' you have ' + posts + ' posts which is less than 1000 and you have ' + warning + '% warning. You cannot upgrade');
    } else {
        console.log(member + ' You are already Uber');
    }

}

upgradeChecker(worker.username, worker.groupIs, worker.warnings, worker.postCount);
upgradeChecker(normalMember.username, normalMember.groupIs, normalMember.warnings, normalMember.postCount);
upgradeChecker(l33tMember.username, l33tMember.groupIs, l33tMember.warnings, l33tMember.postCount);
upgradeChecker($3picmemberRIP.username, $3picmemberRIP.groupIs, $3picmemberRIP.warnings, $3picmemberRIP.postCount);

标签: javascriptdebugging

解决方案


现在 upgradeChecker 是一个接收数字和字符串并更改这些值的函数。它不会将这些值识别为对象的属性。您可以做的是修改该函数,使其接收完整的对象,然后修改其属性。

var User = function(username, groupIs, warnings, postCount) {
  this.username = username;
  this.groupIs = groupIs;
  this.warnings = warnings;
  this.postCount = postCount;
}

var worker = new User('Worker', 'Uber', 0, 1500);
var normalMember = new User('ImAnormalMember', 'normal', 0, 2000);
var l33tMember = new User('l33tboy', 'L33t', 0, 800);
var $3picmemberRIP = new User('epicMember', '3pic', 20, 800);


function upgradeChecker(user) {
  if ((user.groupIs != 'Uber' && user.postCount > 1000) && user.warnings === 0) {
    console.log(user.username + ' Congrats on Uber !');
    user.groupIs = "Uber";
  } else if (user.postCount < 1000 && user.warnings === 0) {
    console.log(user.username + ' You have ' + user.postCount + ' posts, you do not meet the requirements');
  } else if (user.warnings != 0 && user.postCount > 1000) {
    console.log(user.username + ' You cannot upgrade with ' + user.warnings + ' warning')
  } else if (user.postCount < 1000 && user.warnings != 0) {
    console.log(user.username + ' you have ' + user.postCount + ' posts which is less than 1000 and you have ' + user.warnings + '% warning. You cannot upgrade');
  } else {
    console.log(user.username + ' You are already Uber');
  }
}

upgradeChecker(worker);
upgradeChecker(l33tMember);
upgradeChecker($3picmemberRIP);

upgradeChecker(normalMember);
console.log(normalMember.groupIs);


推荐阅读