【问题标题】:Javascript supermarket test appJavascript超市测试应用
【发布时间】:2014-02-20 05:28:07
【问题描述】:

我用 JavaScript 创建了这个超市应用程序。它具有预定义的过道信息。然后用户给脚本 3 个项目和它们所属的类别。如果某个类别与预定义的类别之一匹配,脚本会告诉您您的项目所在的位置。

我想知道是否有更有效的方法来循环、存储和比较这些数据?我应该在这里使用数组还是对象?

var safeway = {};
safeway.aisle1 = {
    contents: "fresh produce",
    aisle: "Aisle 1"
};
safeway.aisle2 = {
    contents: "meat and seafood",
    aisle: "Aisle 2"
};
safeway.aisle3 = {
    contents: "dairy",
    aisle: "Aisle 3"
};
safeway.aisle4 = {
    contents: "snacks",
    aisle: "Aisle 4"
};
safeway.aisle5 = {
    contents: "beverages",
    aisle: "Aisle 5"
};
safeway.aisle6 = {
    contents: "frozen foods",
    aisle: "Aisle 6"
};
safeway.aisle7 = {
    contents: "condiments and ingredients",
    aisle: "Aisle 7"
};

li1 = prompt("List Item 1");
li1Category = prompt("What category does this item belong to?");


li2 = prompt("List Item 2");
li2Category = prompt("What category does this item belong to?");


li3 = prompt("List Item 3");
li3Category = prompt("What category does this item belong to?");


var list = {};

list.item1 = {
item: li1,
category: li1Category
};

list.item2 = {
item: li2,
category: li2Category
};

list.item3 = {
item: li3,
category: li3Category
};

var match = function() {
    for(var i in list) {
        for(var x in safeway) {
            if(list[i].category === safeway[x].contents) {
                console.log("The " + list[i].item + " is in " + safeway[x].aisle);
        }
    }

}
};
match();

【问题讨论】:

  • 使用contents -> aisle 映射,而不是aisle -> contents 映射。然后,您可以使用safeway[list[i].category].aisle 获得特定类别的通道(当然,假设该类别存在,您可能也应该考虑不存在的类别)。

标签: javascript arrays object compare


【解决方案1】:

您可以使用内容(类别)键和通道值创建安全通道对象,以按内容(类别)搜索通道(假设一个类别只能在一个通道中)。

而且,代码中的列表可以是一个数组。

var safeway = {};

safeway['fresh produce'] = 'Aisle 1';

safeway['meat and seafood'] = 'Aisle 2';

var list = [];

var li = 'beef';
var liCategory = 'meat and seafood';

list.push({
    item: li,
    category: liCategory
});

li = 'some item';
liCategory = 'some category';

list.push({
    item: li,
    category: liCategory
});

function match(items, store) {
    var foundAisle;
    var item;
    for (var i = 0; i < items.length; i++) {
        foundAisle = store[items[i].category];
        item = items[i].item;
        if (foundAisle) {
            console.log("The " + item + " is in " + foundAisle);
        } else {
            console.log("The " + item + " is not found");
        }
    }
};

match(list, safeway);

The beef is in Aisle 2
The some item is not found

【讨论】:

    【解决方案2】:

    您正在使用“safeway”作为 JavaScript 对象。 我会说 JSON 格式是更有效的数据存储方式。这样您就可以使用jQuery或PHP等轻松解析您的海量数据。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-12-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-31
      • 1970-01-01
      相关资源
      最近更新 更多