我需要 mongodb 的 $unwind
类似带下划线的功能,这样
[{
groups: [{ name: 'test 1' }, { name: 'test 2' }],
id: 1
}]
成为了
[{
id: 1,
group: {
name: 'test 1'
}
}, {
id: 1,
group: {
name: 'test 2'
}
}]
可以用下划线来完成吗?
最佳答案
您可以为目标字段中的每个元素映射一个新对象。例如,使用 mixin 并假设您想要一个类似于 _.unwind(object, field)
的方法签名:
_.mixin({
unwind: function(o, field) {
return _.map(o[field], function(val) {
var cloned = _.clone(o);
cloned[field] = val;
return cloned;
});
}
});
你可以像这样使用它:
_.unwind({
groups: [{ name: 'test 1' }, { name: 'test 2' }],
id: 1
}, 'groups');
和
- 一把 fiddle http://jsfiddle.net/nikoshr/ag31ypeb/
- 一个片段
function log(obj) {
document.getElementById('logged').innerHTML+= '<p>'+JSON.stringify(obj)+'</p>';
}
_.mixin({
unwind: function(o, field) {
return _.map(o[field], function(val) {
var cloned = _.clone(o);
cloned[field] = val;
return cloned;
});
}
});
var o = { _id : 1, item : "ABC1", sizes: [ "S", "M", "L"] };
log(_.unwind(o, 'sizes'));
var g = {
groups: [{ name: 'test 1' }, { name: 'test 2' }],
id: 1
};
log(_.unwind(g, 'groups'));
<script src="http://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.5.2/underscore-min.js"></script>
<div id='logged'></div>
关于javascript - 使用下划线展开功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26037539/