目前,我正在使用CoffeeScript进行以下操作:
keys = (key for key of data)
values = (v for k,v of data)
当 data
是一个对象(不是数组)时。我试图创建两个数组,其中keys是属性名称的数组,values是值的数组。
这将编译为:
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)
获取键。 - Ricardo Tomasi