当我查询数据库表时,对于表示项目是否存在的记录(项目是列名称),我返回值“是”或“否”。我想创建一个字符串来表示按名称提供的产品(而不是我现在正在做的事情“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个项目可以呈现给用户,是否有更有效的方法来完成这项任务?一种选择是更改值输入到数据库表中的方式,而不是是,它的项目名称,但这似乎是解决问题的较差方法
答案 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”是每个对象中的键名必须对齐。
这是一个现场演示: