1
/**
* recursively build a nested Backbone.Model or Backbone.Collection
* from a deep JSON structure.
*
* undefined for regex values
*/
exports.modelify = function modelify (data) {
if (_.isArray(data)) {
return new Backbone.Collection(_.map(data, modelify));
}
else if (_.isObject(data) && !_.isDate(data)) {
var m = util.mapo(data, function(val, key) {
return [key, modelify(val)];
});
return new Backbone.Model(m);
}
else {
// data is a primitive or a date
return data;
}
}
var mapo = exports.mapo = _.compose(_.object, _.map);
爲什麼減少?如果這是一個性能問題,你可能更適合構建一個循環遍歷樹的函數。 reduce是爲數組設計的,所以嘗試使用這種方法是不合理的。 – olleicua