Javascript 我的函数priceFilter()工作不正常

Javascript 我的函数priceFilter()工作不正常,javascript,Javascript,创建一个名为priceFilter的函数,该函数返回价格低于一定金额的所有项目 函数应该包含两个参数,一个项目数组和一个金额(一个数字) 返回价格低于金额的项目数组。 例如,当我们传入示例项和金额50时,函数应该返回以下内容: 我仍然有两个问题testCart2由于某些原因返回undefined,即使它打印了所有正确的项目。我将for循环设置为一直运行到数组的末尾,所以不确定为什么它是未定义的,而不是像其他循环一样只在最后一项结束。第二个问题是空数组应该返回[] 我将输入所有的代码,我到目前为止

创建一个名为priceFilter的函数,该函数返回价格低于一定金额的所有项目

函数应该包含两个参数,一个项目数组和一个金额(一个数字) 返回价格低于金额的项目数组。 例如,当我们传入示例项和金额50时,函数应该返回以下内容:

我仍然有两个问题testCart2由于某些原因返回undefined,即使它打印了所有正确的项目。我将for循环设置为一直运行到数组的末尾,所以不确定为什么它是未定义的,而不是像其他循环一样只在最后一项结束。第二个问题是空数组应该返回[]

我将输入所有的代码,我到目前为止的项目,所以任何人都可以测试它。谢谢你的帮助

const sampleCart=[{
itemName:“有效的编程习惯”,
键入:“书”,
售价:13.99
},
{
项目名称:“创建3005”,
键入:“计算机”,
价格:299.99
},
{
itemName:“找到你的中心”,
键入:“书”,
价格:15.00
}
]
常量testCart1=[{
itemName:“有效的编程习惯”,
键入:“书”,
售价:18.99
},
{
项目名称:“创建3005”,
键入:“计算机”,
售价:399.99
},
{
itemName:“Orangebook Pro”,
键入:“计算机”,
价格:899.99
},
{
itemName:“找到你的中心”,
键入:“书”,
价格:15.00
},
{
itemName:“难以置信的算法”,
键入:“书”,
售价:29.99
},
{
itemName:“另一项”,
字体:“衣服”,
价格:25.00
}
]
常量testCart2=[{
项目名称:“铅笔盒”,
类型:“供应品”,
售价:2.99
},
{
项目名称:“螺旋笔记本”,
类型:“供应品”,
售价:4.99
},
{
物品名称:“一包10支铅笔”,
类型:“供应品”,
价格:8.20
},
{
项目名称:“圆珠笔”,
类型:“供应品”,
价格:2.20
},
{
物品名称:“橡皮擦”,
类型:“供应品”,
价格:.99
},
{
物品名称:“订书机”,
类型:“供应品”,
售价:3.99
}
]
常量testCart3=[]
功能价格(项目){//328.98
让totalPrice=0;
for(设i=0;ib.price-a.price)
设最高价格=0;
为了({
项目名称,
价格
}(项目数量){
如果(价格>最高价格){
最高价格=价格;
最高价格=项目名称;
}
返回最高价格
}
}
功能价格过滤器(项目、编号){
items.sort((a,b)=>a.price-b.price)
for(设i=0;items.length;i++){
if(项目[i]。价格<数量){
控制台日志(项目[i]);
}否则{
返回;
}
}
}
价格过滤器(TestCart250)
const testCart1=[{
itemName:“有效的编程习惯”,
键入:“书”,
售价:18.99
},
{
项目名称:“创建3005”,
键入:“计算机”,
售价:399.99
},
{
itemName:“Orangebook Pro”,
键入:“计算机”,
价格:899.99
},
{
itemName:“找到你的中心”,
键入:“书”,
价格:15.00
},
{
itemName:“难以置信的算法”,
键入:“书”,
售价:29.99
},
{
itemName:“另一项”,
字体:“衣服”,
价格:25.00
}
]
功能价格过滤器(项目、编号){

return items.filter(item=>item.price在for循环中,您没有提到条件,这就是它不能按预期工作的原因

function priceFilter(items, number) {
  items.sort((a, b) => a.price - b.price)
  for (let i = 0; i<items.length; i++) {  //add condiiton
    if (items[i].price < number) {
      console.log(items[i]);
    } else {
      return;
    }
  }

}
功能价格过滤器(项目、编号){
items.sort((a,b)=>a.price-b.price)

对于(设i=0;i)您的函数只打印所选项目,不返回它们。不需要对数组进行排序。只需使用
items.filter()
items.length
应该是
i
,正如Barmar所说,您可以使用items.filter()。顺便说一句,如果您想以这种方式保留函数,则需要返回项。这些函数中没有返回任何内容。testCart2 JSon存在问题。您使该函数工作得非常好。欢迎:)祝您愉快。