【发布时间】:2012-07-10 03:31:12
【问题描述】:
现在,我正在 CoffeeScript 中执行此操作:
keys = (key for key of data)
values = (v for k,v of data)
其中data 是一个对象(不是数组)。我正在尝试创建两个数组,其中键是属性名称的数组,值是值的数组。
这编译为:
var keys, values;
keys = (function() {
var _results;
_results = [];
for (key in data) {
_results.push(key);
}
return _results;
})();
values = (function() {
var _results;
_results = [];
for (k in data) {
v = data[k];
_results.push(v);
}
return _results;
})();
我希望能够将这两个循环组合成一个循环,但不知道如何(或是否可能)使用列表推导来做到这一点。
我做的另一种尝试是创建两个数组并自己将项目推送给它们:
keys = []
values = []
keys.push k for k,v of data
这让我可以很好地按下键,但我也无法弄清楚推送到 values 的语法。
如何从一个列表推导创建两个数组?我自己编写循环会更好吗?
【问题讨论】:
-
根据您的环境,您还可以使用
Object.keys(data)获取密钥
标签: coffeescript list-comprehension