我有一个从mongo查询返回的数组数组。我要取出每个数组中的第一个项目/元素。这是我的节点路线
部分路由
let queries = [
User.find({"companyID":req.user.companyID}, (err, foundUsers) => {
if (err) throw err;
}),
];
Promise.all(queries)
.then(results => {
res.render('hr/employees', {header: 'EMPLOYEES', users: results[0]});
}).catch( err => {
req.flash('error', err);
res.render('hr/employees', {header: 'EMPLOYEES'});
});
样本数组
我现在拥有的东西
[[1, 2, 3], [4, 5, 6], [7, 8, 9]]
我想要的
[[2, 3], [5,6], [8,9]]
答案 0 :(得分:1)
类似的事情应该可以完成,
const arrOfArrays = []; // get value from response
// remove first element from all arrays safely
const newArr = arrOfArrays.map(arr => (arr && arr.length) ? arr.shift() : arr);
编辑:正如@rghossi指出的那样,以上代码段应返回第一个元素的数组。因此正确的方法是
const arrOfArrays = []; // get value from response
// remove first element from all arrays safely
const newArr = arrOfArrays.map(arr => (arr && arr.length) ? arr.slice(1) : arr);
答案 1 :(得分:1)
让我们假设results
是一个数组数组。在地图内使用slice删除第一个元素并返回所需的数组。
Promise
.all(queries)
.then(results => (results.map(result => (result.slice(1)))))
.then(adaptedResults => res.render('hr/employees', { header: 'EMPLOYEES', users: adaptedResults[0] });
编辑:使用您提供的值。
console.log([[1, 2, 3], [4, 5, 6], [7, 8, 9]].map(arr => (arr.slice(1))))
答案 2 :(得分:0)
您正在寻找类似Array.prototype.shift()
的声音:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/shift
答案 3 :(得分:0)
您可以轻松地使用slice()
和shift()
方法
for (i = 0; i < results.length; i++) {
results[i].slice(1);//OR you can use results[i].shift()
}
或者您可以修改代码,例如:
Promise.all(queries)
.then(results => (results.map(result => (result.shift())) {
//OR you can use result.slice()
//Your code here
});
它将删除数组数组中的所有第一个元素。