gpt4 book ai didi

javascript - jscript 对象中的 for in 循环显示为文本

转载 作者:行者123 更新时间:2023-12-02 13:53:28 24 4
gpt4 key购买 nike

        var Product = {
name : 'Soap',
brand : 'Dove',
price : 25.50,
discountRate : 5,
quantitySold: [10,5,25,8,4],
netPrice:function(){return this.price * (100 - this.discountRate) / 100;},
averageSales:function(){
for(var sum in this.quantitySold){
var i = 0;
i++
sum += this.quantitySold[i];
}
return sum
}
}

代码应该添加数组(quantitySold)中的值,然后对它们进行平均,但我似乎无法在循环中显示该值,当您运行代码时,它仅显示为文本

最佳答案

您需要将数组中的所有数字相加,然后除以数组的长度。 Array#reduce是一种循环和求和数据的好方法:

var Product = {
name: 'Soap',
brand: 'Dove',
price: 25.50,
discountRate: 5,
quantitySold: [10, 5, 25, 8, 4],
netPrice: function() {
return this.price * (100 - this.discountRate) / 100;
},
averageSales: function() {
return this.quantitySold.length && this.quantitySold.reduce(function(sum, num) {
return sum + num;
}) / this.quantitySold.length;
}
}

console.log(Product.averageSales());

如果您想使用简单的循环,请使用简单的 for loop :

var Product = {
name: 'Soap',
brand: 'Dove',
price: 25.50,
discountRate: 5,
quantitySold: [10, 5, 25, 8, 4],
netPrice: function() {
return this.price * (100 - this.discountRate) / 100;
},
averageSales: function() {
var sum = 0;
for (var i = 0; i < this.quantitySold.length; i++) {
sum += this.quantitySold[i];
}

return sum / this.quantitySold.length;
}
}

console.log(Product.averageSales());

为什么你的代码结果是“45”?

当您使用for in时,sum 变量保存属性键字符串(索引),当它收到新索引时,所有内容都会被丢弃。此外,在每个循环中,您将 i 重置为 0,并将其递增 1,因此 i 实际上始终为 1。当到达最后一次迭代时 sum"4",索引 1 中的数字为 5 => "4"+ 5 === "45",这就是您得到的结果。

关于javascript - jscript 对象中的 for in 循环显示为文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40861432/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com