解决javascript和数据库表逻辑情况

时间:2016-03-09 01:07:37

标签: javascript mysql

当我查询数据库表时,对于表示项目是否存在的记录(项目是列名称),我返回值“是”或“否”。我想创建一个字符串来表示按名称提供的产品(而不是我现在正在做的事情“kitchen table =”+ kitchenTable;

我认为这可以通过一系列if语句将变量设置为产品名称或“”来解决(很差),然后在字符串中包含所有变量

var kt; 
if (kitchenTable == yes) kt = "kitchen table"; 
else kt = ""; 
if (kitchenCabinet == yes) kc = "kitchen cabinet";
else ka = "";

output = kt + ', ' + kc; 

有大约50个项目可以呈现给用户,是否有更有效的方法来完成这项任务?一种选择是更改值输入到数据库表中的方式,而不是是,它的项目名称,但这似乎是解决问题的较差方法

2 个答案:

答案 0 :(得分:0)

当然,您没有提供有关如何进行查询的所有详细信息,因此这是一个模拟查询函数的虚构模型

var available = [];

var result = query("kitchen table");
result === "yes" && ( available.push("kitchen table") );

...

var output = available.join();

答案 1 :(得分:0)

你想要的实际上是内置于javascript本身。

我想说通过组织代码并将其转换为更易读的格式,在这种情况下使用对象文字将非常简单。

我还建议将您的服务器数据转换为true和false,因为这是传达布尔值的标准方式,并允许下面的方法正常工作:

// From server response
var results = {
                    kitchenCabinet: true,
                    kitchenTable: true
}

// Use this for your storage of all related items
var kitchenProps = { 
                  kitchenCabinet: 'kitchen cabinet',
                  kitchenTable: 'kitchen table'
 }

// Reuse this function for each time your need a new category (masterBathroomProps...)
function getItemDataIfExists(results, hashTable){
    'use strict';

    var output = 'Your total is: '; 

    for (var item in results) {
        if (!results.hasOwnProperty(item)) return;
        if (results[item]) output += 'A '+hashTable[item]+' ';
    }

    return output;
}


getItemDataIfExists(results, kitchenProps);

说明:

循环遍历包含键名和true false值的对象的结果集。在循环中,如果keyname的值为true,则使用该keyname访问属性(在这种情况下是您选择的字符串。这里的“key”是每个对象中的键名必须对齐。

这是一个现场演示:

http://codepen.io/nicholasabrams/pen/JXXbYz?editors=0010