删除另一个数组内的一个数组中的第一个元素

时间:2018-09-12 01:47:26

标签: javascript arrays node.js mongodb mongoose

我有一个从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]]

4 个答案:

答案 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)

答案 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
});

它将删除数组数组中的所有第一个元素。