将javascript对象数组转换为只是数组

时间:2012-09-18 19:28:00

标签: javascript jquery jquery-ui jquery-ui-autocomplete

所以我创建了一个巨大的对象,它通过一个数据库表并收集所有具有适当列名的行,如下所示(sx是一个输出到javascript的字符串):

if (i == 0)
{
   sx += "SearchAutocomplete['"+ s.Key + "'] = {};";
}
sx += "SearchAutocomplete['" + s.Key + "'][" + i + "] = '" + s.Value + "';";

(以上是C#代码,但错误是javascript部分)。

我的目标是使用这个巨大的对象将它放在JQuery UI的autocomplete()函数中,基于列名......

http://jqueryui.com/demos/autocomplete/

htmltable += sx + "$('#mySearchBox').autocomplete({" +
                "source: jQuery.makeArray(SearchAutocomplete['" + columnName + "'])" +
                "});"

我尝试使用jQuery.makeArray,但无论我尝试什么,它都不会将SearchAutocomplete ['columnName']识别为值数组。

自动填充不起作用。

我猜测解决方案是以某种方式循环并将对象转换回数组。但是有更简单的方法吗?

尝试修复#1:

if(list_fields.ContainsKey(s.Key)){
   if (i == 0)
   {
      sx += "SearchAutocomplete['"+ s.Key + "'] = [];";
   }
   sx += "SearchAutocomplete['" + s.Key + "'].push('" + s.Value + "');";
 }

1 个答案:

答案 0 :(得分:1)

也许尝试这个改变:

//Outside your loop:
sx += "SearchAutocomplete['" + s.Key + "'] = [];";
//... Inside your loop:
sx += "SearchAutocomplete['" + s.Key + "'].push('" + s.Value + "');";

这样,SearchAutocomplete[columnName]就是一个本地数组。