【发布时间】:2016-10-21 05:27:49
【问题描述】:
我正在尝试获取键的值来为我的下拉菜单设置自动完成值。用户将在“#currentSelectedLevel”字段中输入“LOAN”,jQuery 将使用来自 loanFields 的键填充所有“.episysFieldName”字段。
if($("#currentSelectedLevel").val()=="LOAN"){
$(".levelFieldName").autocomplete('option', 'source', _.keys(loanFields));}
var loanFields = [
{"BALANCE": "MONEY"},
{"OPENDATE": "DATE"},
{"CLOSEDATE": "DATE"}
];
当我发出警报时,我只会得到值的索引。 [0,1,2]。我需要它来返回“BALANCE”、“OPENDATE”、“CLOSEDATE”。
alert( _.keys(loanFields));
当我只在数组中使用字符串时,我的 jQuery 代码可以正常工作。
注意:我开始使用对象/键值对的原因是因为将来我需要知道字段的类型以及可能的其他属性。我相信我的问题是我如何在数组中构造对象。任何帮助将不胜感激。
【问题讨论】:
-
您应该将常规对象传递给
_.keys。0,1,2是数组键,数组的索引。 -
_.flatten(_.map(loanFields, _.keys))应该返回["BALANCE", "OPENDATE", "CLOSEDATE"]。如果代码 sn -p 难以阅读,也可以使用_.chain方法:_.chain(loanFields).map(loanFields, _.keys).flatten().value() -
Native js :
loanFields.map(function(obj){ for(var k in obj) return k; })(IE 9+) 或者你可以使用下划线_.map()。 -
原生js:
loanFields.map(x => Object.keys(x)[0]);
标签: javascript jquery arrays object underscore.js