Javascript 在数组内容上循环以比较值
我认为我做的一切都是对的,但我不明白为什么我的代码总是返回false。当使用(库存和字符串)调用时,我得到的结果都是false,尽管中的值不同 创建一个名为shouldWeOrderThisCandy的函数,该函数接受库存数组 一种特殊类型的糖果(串) 如果库存数量小于周平均值,则返回true,否则返回falseJavascript 在数组内容上循环以比较值,javascript,arrays,Javascript,Arrays,我认为我做的一切都是对的,但我不明白为什么我的代码总是返回false。当使用(库存和字符串)调用时,我得到的结果都是false,尽管中的值不同 创建一个名为shouldWeOrderThisCandy的函数,该函数接受库存数组 一种特殊类型的糖果(串) 如果库存数量小于周平均值,则返回true,否则返回false let inventory = [ { candy: "Twizzlers", inStock: 180, weeklyAverage: 200 }, {
let inventory = [
{ candy: "Twizzlers", inStock: 180, weeklyAverage: 200 },
{ candy: "Sour Patch Kids", inStock: 90, weeklyAverage: 100 },
{ candy: "Milk Duds", inStock: 300, weeklyAverage: 170 },
{ candy: "Now and Laters", inStock: 150, weeklyAverage: 40 }
]
function shouldWeOrderThisCandy(inventory, []){
for (i = 0; i < inventory.length; i++){
if (inventory.weeklyAverage < inventory.inStock){
return true;
} else {
return false;
}
}
};
let inventory=[
{candy:“twizzler”,库存:180,每周平均:200},
{candy:“酸补丁儿童”,库存:90,每周平均:100},
{糖果:“牛奶袋”,库存:300,每周平均:170},
{candy:“现在和以后”,库存:150,每周平均:40}
]
函数应为我们订购此糖果(库存,[]){
对于(i=0;i
如何返回true?我发现您的代码中存在问题。Inventory是一个列表,您正在使用Inventory.yourproperty访问属性,该属性不正确。相反,像这样使用,你应该得到正确的结果
if (inventory[i].weeklyAverage < inventory[i].inStock){
return true;
方法:
void shouldWeOrderThisCandy()
{
List<Invenory> inventories = new List<Invenory>()
{ new Invenory { candy= "Twizzlers", inStock= 180, weeklyAverage= 200},
new Invenory { candy= "Sour Patch Kids", inStock= 90, weeklyAverage= 100},
new Invenory { candy= "Milk Duds", inStock= 300, weeklyAverage= 170},
new Invenory { candy= "Now and Laters", inStock= 150, weeklyAverage= 40} };
foreach (var inventory in inventories)
{
if (inventory.weeklyAverage < inventory.inStock)
{
//write logic to add order
}
}
}
void应该我们订购thiscandy()
{
清单存货=新清单()
{new Invenory{candy=“twizzler”,inStock=180,weeklyaaverage=200},
新因维诺{candy=“Sour Patch Kids”,inStock=90,weeklyaaverage=100},
新Invenory{candy=“Milk Duds”,库存=300,每周平均值=170},
新因维诺{candy=“Now and Laters”,inStock=150,weeklyAverage=40};
foreach(存货中的var存货)
{
if(inventory.weeklyAverage
您的代码中有一些错误,您在第一个循环后立即从循环返回,而您需要调查每个糖果,如果我没有弄错的话。。。检查下面的代码,阅读注释
UPD:添加了只指定一个糖果的方法
const inventory=[
{candy:“twizzler”,库存:180,每周平均:200},
{candy:“酸补丁儿童”,库存:90,每周平均:100},
{糖果:“牛奶袋”,库存:300,每周平均:170},
{candy:“现在和以后”,库存:150,每周平均:40}
]
const shouldWeOrderThisCandy=(库存,str)=>{
//设置一些对象以存储所有DB值结果
const result={};
//环路
for(设i=0;i log(shouldworderthiscandy(inventory))代码>嘿,欢迎来到StackOverflow!:)
这里的第一个问题是,您从未从For循环中的清单
-数组中读取当前对象,但始终尝试访问数组本身的周平均值
,该数组不具有此属性。:)
因此,if条件会导致比较undefined
可以通过如下方式拉出值来修复此问题:
函数应为OrderThisCandy(库存,[]){
对于(i=0;i
但是,这将始终只检查数组中的第一个糖果,然后立即从函数返回,从而取消for循环
不太确定你是想让循环检查每一个糖果还是一个特定的。但如果需要所有Candy的状态,则不应在for循环中返回,而应将值保存在对象中,例如:
函数应为OrderThisCandy(库存,[]){
const candyNeedsOrderMap={};
对于(i=0;i
但是,如果您需要某个特定糖果的值,可以通过以下方式实现:
函数应为我们订购此糖果(库存,candyName){
const candy=inventory.find(current=>current.candy==candyName);
返回candy.weeklyAverage
我不知道你的意思,
我添加了一个新列来存储每一行的结果
let inventory=[
{candy:'Twizzler',库存:180,每周平均:200},
{candy:《酸补丁的孩子们》,inStock:90,每周平均:100},
{糖果:'牛奶哑巴',库存:300,每周平均:170},
{candy:'现在和以后',库存:150,每周平均:40},
];
函数shouldWeOrderThisCandy(库存、糖果){
const行=inventory.find(item=>item.candy==candy);
if(行周平均值<行库存){
返回true;
}否则{
返回false;
}
}
log(应该订购此糖果(库存“牛奶袋”)代码>尝试库存[i]。属性
-您引用了数组本身,而不是索引i
处的值,谢谢,但现在一切都返回true。我不明白当调用(库存,“twizzler”)预期:true得到:true时,测试通过了什么。调用时测试通过
void shouldWeOrderThisCandy()
{
List<Invenory> inventories = new List<Invenory>()
{ new Invenory { candy= "Twizzlers", inStock= 180, weeklyAverage= 200},
new Invenory { candy= "Sour Patch Kids", inStock= 90, weeklyAverage= 100},
new Invenory { candy= "Milk Duds", inStock= 300, weeklyAverage= 170},
new Invenory { candy= "Now and Laters", inStock= 150, weeklyAverage= 40} };
foreach (var inventory in inventories)
{
if (inventory.weeklyAverage < inventory.inStock)
{
//write logic to add order
}
}
}