Удалить первый элемент в массиве внутри другого массива - PullRequest
0 голосов
/ 12 сентября 2018

У меня есть массив массивов, который возвращается из запроса Монго. Я хочу взять и удалить первый элемент / элемент в каждом массиве. Вот мой узел маршрута

Маршрут частичный

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 голосов
/ 12 сентября 2018

Вы можете легко использовать 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
});

Он удалит все первые элементы вмассив массивов.

0 голосов
/ 12 сентября 2018

Что-то вроде этого должно делать работу,

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); 
0 голосов
/ 12 сентября 2018

Предположим, results - это массив массивов. Используйте слайс внутри карты, чтобы удалить первый элемент и вернуть нужный массив.

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))))
0 голосов
/ 12 сентября 2018

Похоже, Array.prototype.shift() это то, что вы ищете: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/shift

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...