在Javascript/NodeJS中串联未知数量的数组
我的一个控制器中有一个函数,我在其中填充一个文档的引用数组,当填充时,文档本身就嵌入了数组 下面是一个例子: mongoose填充函数为我提供了一个对象数组。每个对象中都有一个数组: [{name:Test,array:[1,2,3,4,5]},{name:TestAgain,array:[1,2,3,4,5]},{name:Test^3,array:[1,2,3,4,5]},{ 所需的输出将是: [1,2,3,4,5,1,2,3,4,5,1,2,3,4,5,…] 我需要连接填充引用中的所有“数组”。在不知道有多少个数组的情况下,如何连接 以下是(通常)我的函数的外观,以供参考:在Javascript/NodeJS中串联未知数量的数组,javascript,arrays,node.js,Javascript,Arrays,Node.js,我的一个控制器中有一个函数,我在其中填充一个文档的引用数组,当填充时,文档本身就嵌入了数组 下面是一个例子: mongoose填充函数为我提供了一个对象数组。每个对象中都有一个数组: [{name:Test,array:[1,2,3,4,5]},{name:TestAgain,array:[1,2,3,4,5]},{name:Test^3,array:[1,2,3,4,5]},{ 所需的输出将是: [1,2,3,4,5,1,2,3,4,5,1,2,3,4,5,…] 我需要连接填充引用中的所有“数
exports.myFunctionName = function ( req, res, next )
Document.findOne({ 'document_id' : decodeURIComponent( document_id )}).populate('array_containing_references').exec(function( err, document)
{
//Here I need to concatenate all of the embedded arrays, then sort and return the result as JSON (not worried about the sorting).
});
假设您的输入位于
文档
变量中,请尝试以下操作:
var output = document.reduce(function (res, cur) {
Array.prototype.push.apply(res, cur.array);
return res;
}, []);
或者这个:
var output = [];
document.forEach(function(cur) {
Array.prototype.push.apply(output, cur.array);
});
您希望获取每个文档并使用其中的一个属性执行某些操作。听起来这是一个很好的使用案例
map
将获取每个文档的array
值,并返回这些值的数组。但是,您不需要嵌套数组,因此我们只需使用array.prototype.concat
将其展平。您还可以使用类似于flatte
的方法
var a=[
{name:'test1',数组:[1,2,3,4,5]},
{name:'test2',数组:[1,2,3,4,5]},
{name:'test3',数组:[1,2,3,4,5]}
];
var results=Array.prototype.concat.apply([],a.map(函数(doc){return doc.Array;}));
document.body.innerHTML=results;
一点也不清楚。至少简化两个因素(因为看起来你想要的是非常简单的东西)。显示输入、所需的输出以及你迄今为止尝试过的内容。添加。希望这有帮助。@RobG-是的..这是事后的想法…修复