需要帮助: 我有我的JSON格式的数组。我无法理解的是,当匹配用户输入时,所述数组的所有内容如何。我可以显示整个数组,我可以检查输入是否在数组中。
代码:
//user input
var product = document.getElementById('product').value;
var price = document.getElementById('price').value;
var quantity = document.getElementById('quantity').value;
//Products
var viewInventory = [{
id : 'a',
name : 'iphone',
model : 10,
price : 900,
quantity : 25
}, {
id: 'b',
name : 'pixel',
model : 1,
price : 800,
quantity : 40
},{
id: 'c',
name : 'pants',
model : 8,
price : 700,
quantity : 80
},{
id: 'd',
name : 'essential',
model : 10,
price : 900,
quantity : 25
}];//end of viewInventory
console.log(viewInventory);//just testing to see it JSON obj works
function hello(){
var item;
for (var i = 0; item = viewInventory[i].name; i++){
console.log(item);
// console.log(viewInventory[i].name)
if (product === item){
console.log(viewInventory[i]);
console.log(item + "This is input");
// document.write(myTable);
}
}
问题:
以下是我的书中的问题(我是自学)。 将数据从文件中拉入复杂的数据结构使解析变得更加简单。许多编程语言都支持JSON格式,这是一种表示数据的流行方式。
创建一个程序,该程序将产品名称作为输入并检索该产品的当前价格和数量。产品数据位于JSON格式的数据文件中,如下所示:
{
_"products" : [
_{"name": "Widget", "price" : 25.00, "quantity": 5 },
__{"name": "Thing", "price": 15.00, "quantity": 5},
__{"name": "Doodad", "price": 5.00, "quantity": 10}
__]
}
如果找到产品,请打印产品名称,价格和数量。如果没有产品与搜索匹配,请说明没有找到产品并重新开始。
示例输出 什么是产品名称? iPad的 对不起,我们的库存中找不到该产品 什么是产品名称?窗口小部件 名称:小工具 价格:25.00美元 现有数量:5
约束 该文件采用JSON格式。使用JSON解析器将值从文件中提取出来。 如果未找到记录,请再次提示。 挑战 确保产品搜索不区分大小写。 如果找不到产品,请询问是否应添加产品。如果是,请询问价格和数量,并将其保存在JSON文件中。确保新添加的产品可立即供搜索,无需重新启动程序。
答案 0 :(得分:1)
您可以使用Array.prototype.filter
功能:
var product = document.getElementById('product').value;
var price = document.getElementById('price').value;
var quantity = document.getElementById('quantity').value;
var matchingProducts = viewInventory.filter((v)=>v.name.indexOf(product)>-1);
if(!matchingProducts.length) alert('Sorry, that product was not found in our inventory');
else {
alert(
matchingProducts.reduce(
(c,i)=>c+i.name+' found with price='+i.price+' and the quantity='+i.quantity+'\n',
''
)
);
}