如何组合包含相同对象键的多个子数组?
how to combine multiple sub-arrays that contain same objects' keys?
有人可以帮我解决这个问题吗?我花了很长时间试图弄清楚。我有以下格式:
[
[{id:'1',venue:'foa',title:'t'},{id:'5',venue:'cs',title:'b'}, ...],
[{id:'2',venue:'fob',title:'t'},{id:'6',venue:'cs',title:'b'}, ...],
[{id:'3',venue:'foc',title:'t'},{id:'7',venue:'cs',title:'b'}, ...],
[{id:'4',venue:'fod',title:'t'},{id:'8',venue:'cs',title:'b'}, ...]
]
制作这种格式的最简单方法是什么(最好是._下划线):
{id:'1',venue:'foa',title:'t'}
{id:'5',venue:'cs',title:'b'}
{id:'2',venue:'fob',title:'t'}
{id:'6',venue:'cs',title:'b'}
{id:'3',venue:'foc',title:'t'}
{id:'7',venue:'cs',title:'b'}
{id:'4',venue:'fod',title:'t'}
{id:'8',venue:'cs',title:'b'}
你的问题不够清楚,但如果你只是想展平你的数组,你可以使用下面的代码:
var arr = [
[{id:'1',venue:'foa',title:'t'},{id:'5',venue:'cs',title:'b'}],
[{id:'2',venue:'fob',title:'t'},{id:'6',venue:'cs',title:'b'}],
[{id:'3',venue:'foc',title:'t'},{id:'7',venue:'cs',title:'b'}],
[{id:'4',venue:'fod',title:'t'},{id:'8',venue:'cs',title:'b'}]
];
var res = [].concat(...arr);
console.log(res);
我不确定你到底想要什么,但你可以尝试使用 Lodash:
var result = [];
var obj = [
[{id:'1',venue:'foa',title:'t'},{id:'5',venue:'cs',title:'b'}],
[{id:'2',venue:'fob',title:'t'},{id:'6',venue:'cs',title:'b'}],
[{id:'3',venue:'foc',title:'t'},{id:'7',venue:'cs',title:'b'}],
[{id:'4',venue:'fod',title:'t'},{id:'8',venue:'cs',title:'b'}]
];
_.each(obj, function(i) {
_.each(i, function(j) {
result.push(j);
});
});
console.log(result);
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.10/lodash.js"></script>
您可以使用 flatten()
.
var arr = [[{id:'1',venue:'foa',title:'t'},{id:'5',venue:'cs',title:'b'}],[{id:'2',venue:'fob',title:'t'},{id:'6',venue:'cs',title:'b'}], [{id:'3',venue:'foc',title:'t'},{id:'7',venue:'cs',title:'b'}],[{id:'4',venue:'fod',title:'t'},{id:'8',venue:'cs',title:'b'}]],
result = _.flatten(arr);
console.log(result);
<script src="https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.9.1/underscore-min.js"></script>
有人可以帮我解决这个问题吗?我花了很长时间试图弄清楚。我有以下格式:
[
[{id:'1',venue:'foa',title:'t'},{id:'5',venue:'cs',title:'b'}, ...],
[{id:'2',venue:'fob',title:'t'},{id:'6',venue:'cs',title:'b'}, ...],
[{id:'3',venue:'foc',title:'t'},{id:'7',venue:'cs',title:'b'}, ...],
[{id:'4',venue:'fod',title:'t'},{id:'8',venue:'cs',title:'b'}, ...]
]
制作这种格式的最简单方法是什么(最好是._下划线):
{id:'1',venue:'foa',title:'t'}
{id:'5',venue:'cs',title:'b'}
{id:'2',venue:'fob',title:'t'}
{id:'6',venue:'cs',title:'b'}
{id:'3',venue:'foc',title:'t'}
{id:'7',venue:'cs',title:'b'}
{id:'4',venue:'fod',title:'t'}
{id:'8',venue:'cs',title:'b'}
你的问题不够清楚,但如果你只是想展平你的数组,你可以使用下面的代码:
var arr = [
[{id:'1',venue:'foa',title:'t'},{id:'5',venue:'cs',title:'b'}],
[{id:'2',venue:'fob',title:'t'},{id:'6',venue:'cs',title:'b'}],
[{id:'3',venue:'foc',title:'t'},{id:'7',venue:'cs',title:'b'}],
[{id:'4',venue:'fod',title:'t'},{id:'8',venue:'cs',title:'b'}]
];
var res = [].concat(...arr);
console.log(res);
我不确定你到底想要什么,但你可以尝试使用 Lodash:
var result = [];
var obj = [
[{id:'1',venue:'foa',title:'t'},{id:'5',venue:'cs',title:'b'}],
[{id:'2',venue:'fob',title:'t'},{id:'6',venue:'cs',title:'b'}],
[{id:'3',venue:'foc',title:'t'},{id:'7',venue:'cs',title:'b'}],
[{id:'4',venue:'fod',title:'t'},{id:'8',venue:'cs',title:'b'}]
];
_.each(obj, function(i) {
_.each(i, function(j) {
result.push(j);
});
});
console.log(result);
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.10/lodash.js"></script>
您可以使用 flatten()
.
var arr = [[{id:'1',venue:'foa',title:'t'},{id:'5',venue:'cs',title:'b'}],[{id:'2',venue:'fob',title:'t'},{id:'6',venue:'cs',title:'b'}], [{id:'3',venue:'foc',title:'t'},{id:'7',venue:'cs',title:'b'}],[{id:'4',venue:'fod',title:'t'},{id:'8',venue:'cs',title:'b'}]],
result = _.flatten(arr);
console.log(result);
<script src="https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.9.1/underscore-min.js"></script>