gpt4 book ai didi

javascript - 代码在不同环境下的表现不同

转载 作者:行者123 更新时间:2023-12-02 22:20:55 25 4
gpt4 key购买 nike

我一直在为即将到来的考试而学习,并发现了一些奇怪的事情。以下是问题提示:

您有一个时装目录,其中包含来自各种高级时装设计师的商品 list 。每位设计师都有一系列鞋子。每双鞋都有名称和价格。

看起来像这样:

 var currentInventory = [
{
name: 'Brunello Cucinelli',
shoes: [
{name: 'tasselled black low-top lace-up', price: 1000},
{name: 'tasselled green low-top lace-up', price: 1100},
{name: 'plain beige suede moccasin', price: 950},
{name: 'plain olive suede moccasin', price: 1050}
]
},
{
name: 'Gucci',
shoes: [
{name: 'red leather laced sneakers', price: 800},
{name: 'black leather laced sneakers', price: 900}
]
}
];

您的函数应按以下格式返回每位设计师所有鞋子的平均成本:

var expected = {
'designers': [
{
'name': 'Brunello Cucinelli',
'averagePrice': 1025
},
{
'name': 'Gucci',
'averagePrice': 850
}
]
};

我已经编写了一些代码,无论我在 Repl.it 还是 hack Reactor 练习考试网站上运行它,它的行为都会有所不同。这是我的代码:

function calculateAveragePricePerDesigner(inventory) {
var result = {designers: []};
var parsedDesignerAverageCost = [];
for (i = 0; i < inventory.length; i++) {
parsedDesignerAverageCost.push(parseAverageCostPerDesigner(inventory[i]));
console.log(parsedDesignerAverageCost);
}
result.designers = parsedDesignerAverageCost;
return result;
}


function parseAverageCostPerDesigner(currentDesigner) {
var currentShoes = currentDesigner.shoes;
var result = {
name: currentDesigner.name,
averagePrice: 0
};
var cummulativeCost = 0;
var numOfShoes = currentShoes.length;
for (i = 0; i < numOfShoes; i++) {
cummulativeCost += currentDesigner.shoes[i].price;

}
var average = cummulativeCost / numOfShoes;
result.averagePrice = average;
return result;
}

有人能够解释我的代码是否正确以及可能为什么会发生不一致吗?在 Repl.it 上,我的代码可以编译,但不会以我无法解释的方式运行,而在 hack Reactor 网站上,它也不会编译。时间谢谢

最佳答案

这里有一个轻微的“错误”:

 for (i = 0; i < numOfShoes; i++) {

你永远不会声明i。这会将 i 转换为隐式全局变量,因此两个函数都可以使用相同的 i。这意味着内部函数将增加 i,然后外部函数将继续增加 i。因此它会跳过一些记录。简单的解决方法是:

 for (var i = 0; i < numOfShoes; i++) {

这可能与用于测试代码的示例数据有关。

<小时/>

这是我写整个内容的方式:

 function averagePrice(shoes) {
let sum = 0;
for(const shoe of shoes)
sum += shoe.price;
return sum / shoes.length;
}

function task(designers) {
let result = [];
for(const designer of designers) {
result.push({ name: designer.name, averagePrice: averagePrice(designer.shoes) });
}
return result;
}

关于javascript - 代码在不同环境下的表现不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59231362/

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