Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/405.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在JavaScript中添加对象属性_Javascript_Object_Properties - Fatal编程技术网

在JavaScript中添加对象属性

在JavaScript中添加对象属性,javascript,object,properties,Javascript,Object,Properties,我试图从object2的object属性中减去object1的objectProperty的值,并且我一直在控制台上得到NaN。下面是示例代码: object1.objectProperty - object2.object2Property 如果这还不够,我可以发布我项目的完整代码。 如果有其他方法可以做到这一点或某种功能,可以帮助,请让我知道 编辑:这是代码 var myPokemon = { health: 25, defense: 5, atta

我试图从object2的object属性中减去object1的objectProperty的值,并且我一直在控制台上得到NaN。下面是示例代码:

    object1.objectProperty - object2.object2Property
如果这还不够,我可以发布我项目的完整代码。 如果有其他方法可以做到这一点或某种功能,可以帮助,请让我知道

编辑:这是代码

    var myPokemon = {
    health: 25,
    defense: 5,
    attack: 10,
    speed: 5
};

var moves = {
    Scratch: 5,
    Bite: 5,
    Slap: 5,
    Growl: 1
};


var computerPokemon = {
    health: 20,
    defense: 5,
    attack: 10, 
    speed: 7
};

function calcDamage(firstPokemon, secondPokemon, move) {
    if(move == moves.Growl){
        //starts here
        var newDefense =  moves.Growl - firstPokemon.defense;
        console.log(newDefense);
        //ends here
    }else{
    var newHealth = (firstPokemon.health + firstPokemon.defense) - (secondPokemon.attack + move);
    console.log(newHealth);
    }
}
编辑:我什么时候做的
moves.Growl-firstPokemon.defence | 0它返回-4,而不是NaN,这是我想要它做的,但是回答的人删除了答案,所以这是由那个人回答的。

使用将值转换为整数,然后进行数学运算

 var value = parseInt(object1.objectProperty,10) - parseInt(object2.object2Property,10);
问题就在这里

var newHealth = (Number(firstPokemon.health) + Number(firstPokemon.defense)) - (Number(secondPokemon.attack) + Number(move.Growl));

最后一个
Number(move.Growl)
应该是
Number(moves.Growl)
移动
而不是
移动
。在你的例子中,
move
只是一个数字,你正在尝试
number(move.Growl)
这将是NaN,因此你得到了NaN。

问题是你正在第二个参数中添加对象。另外,您的if语句将永远不会执行,我已经修复了这两个问题,如下所示

var myPokemon={
健康:25岁,
答辩:5,
攻击:10,
速度:5
};
变量移动={
划痕:5,
咬:5,
拍打:5,
咆哮:1
};
var computerPokemon={
卫生:20,
答辩:5,
攻击:10,
速度:7
};
函数计算损坏(第一个口袋妖怪,第二个口袋妖怪,移动){
如果(移动.咆哮!=未定义){
//从这里开始
var newdefence=moves.Growl-firstPokemon.defence;
警惕(新防卫);
//到此为止
}否则{
var newHealth=(Number(firstPokemon.health)+Number(firstPokemon.defence))-(Number(secondPokemon.attack)+Number(move.Growl));
警惕(新健康);
}
}

calcDamage(myPokemon、computerPokemon、moves)
通常,如果你得到NaN,你可能在处理除数字以外的其他元素。你确定它们都是数字吗

举个例子:

var x = {}, y = {};
x.r = 10;
y.r = 5;
x.r - y.r; // yields 5

你检查过那些属性中的值了吗?在获取
NaN
时,你的代码中通常有一个
未定义的
变量。你能告诉我
firstPokemon.defense
的值是多少吗当你得到NanyIf和else语句有错误时,你不需要使用parseInt或Number()另外,如果您想检查move.Growl exist,那么您的if语句将不起作用(moves==moves.Growl),请按moves.Growl的方式执行=我认为他在检查move和moves的值。不尝试检查它是否存在是notOkay,但是他的if语句没有执行,而在else语句中,他添加了移动,而不是来自的值it@SherKhan我想我发现了他的问题,检查我的answer@Reddy我已经把所有答案都投了赞成票,包括你的,这是移动,因为他通过了,他把第三个参数命名为“移动”不是“移动”,不管怎样,我很欣赏你的努力,问题是代码中除了NaN问题之外还有bug。这不是parseInt问题,问题是他的代码没有正确地添加和运行条件语句,但你的答案对那些试图添加字符串的人来说是好的