任何人都有关于如何查询coffeescript中的哈希数组的指导?
例如,我有一个哈希数组,每个哈希都有一个"名称"和"设置":
[
{"name":"color", "setting":"red"},
{"name":"scale_min", "setting":"15"},
{"name":"scale_type", "setting":"linear"},
{"name":"x_axis_label", "setting":"Weeks"}
]
Run Code Online (Sandbox Code Playgroud)
我想在这个数组中找到哈希"name"为"x_axis_label"的元素
我怎么能用coffeescript轻松做到这一点?
我需要某种value_for_key_in_object(key, object)功能,并想知道是否会成为词典的一部分......
Roc*_*mat 31
我刚刚快速攻击了这个:
data = [{"name":"color","setting":"red"},{"name":"scale_min","setting":"15"},{"name":"scale_type","setting":"linear"},{"name":"x_axis_label","setting":"Weeks"}]
find = (i for i in data when i.name is 'x_axis_label')[0]
alert(find.setting)
Run Code Online (Sandbox Code Playgroud)
Lar*_*one 11
如果您要反复执行此操作,请始终查找名称等于某事物的内容,那么最好将其从一组地图转换为一个地图,其中键是名称.
data = [
{"name":"color","setting":"red"}
{"name":"scale_min","setting":"15"}
{"name":"scale_type","setting":"linear"}
{"name":"x_axis_label","setting":"Weeks"}
]
myMap = {}
for row in data
myMap[row.name] = row.setting
alert(myMap['x_axis_label'])
Run Code Online (Sandbox Code Playgroud)
我总是喜欢"惯用"解决方案的"多语言"解决方案.因此你可以使用Array.filter
data = [{"name":"color","setting":"red"},{"name":"scale_min","setting":"15"},{"name":"scale_type","setting":"linear"},{"name":"x_axis_label","setting":"Weeks"}]
find = (data.filter (i) -> i.name is 'x_axis_label')[0]
alert find.setting
Run Code Online (Sandbox Code Playgroud)
如果你碰巧使用的是Underscore.js,你可以使用find:
xAxisLabel = _.find data, (datum) -> datum.name is 'x_axis_label'
Run Code Online (Sandbox Code Playgroud)