Как удалить элементы массива, используя Lodash.js? - PullRequest
0 голосов
/ 14 сентября 2018

Поскольку я пытаюсь отбросить первые 5 элементов в массиве, когда элемент массива выходит за пределы 10. Поскольку мой массив продолжает добавлять элементы в метод setInterval.

function checkArray(array,limit,toshow){
    var length =  array.length;
    if(length > limit){
        var  splicedArry =  _.drop(array1,toshow);
        array = splicedArry;
    }
    return array;
}

Пожалуйста, отметьте скрипка

Ответы [ 4 ]

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

Если вы хотите придерживаться lodash, используйте _.dropRight Например

var arr = [1,2,3,4,5,6]

function checkArray(array,limit,toshow){
    var length =  array.length;
    if(length > limit){
        return _.dropRight(array,(length-toshow));

    }else{
        return array;
    }
}
console.log(checkArray(arr,3,3))
0 голосов
/ 14 сентября 2018

Вот весь рабочий код из вашего JSfiddle (с использованием Vanilla JS):

var arrayEl = [];
var count =0;

setInterval(function(){
  count = ++count;
  arrayEl.push(count);


},1000)

setInterval(function() {
  // modify array by reference
  checkArray(arrayEl,10,5)
  // print the contents of modified array
  console.log(arrayEl)
}, 1100)


function checkArray(array,limit,toshow){
  // splice takes 2 arguments to modify an array (people often confuse it with `slice`
  if (array.length > limit) array.splice(0, toshow);
}

Lodash _.drop создает новый массив, поэтому весь код кода будет выглядеть так:

var arrayEl = [];
var count =0;

setInterval(function(){
  count = ++count;
  arrayEl.push(count);


},1000)

setInterval(function() {
  // you must assign the returned value to your original array
  arrayEl = checkArray(arrayEl,10,5)
  console.log(arrayEl)
}, 1100)


function checkArray(array,limit,toshow){
  if (array.length > limit) return _.drop(array, toshow);

  return array;
}
0 голосов
/ 14 сентября 2018

Вместо использования метода lodash _.drop() лучше использовать нативный Array#splice() метод JavaScript , в качестве параметров он принимает индекс, из которого нужно удалить, и количество элементов, которые нужно удалить.быть удаленным.

Таким образом, в вашей функции вы будете называть это так:

array.splice(0, toshow)

Таким образом, он удаляет первые toshow элементы из array, где toshow - этоколичество элементов, которые нужно удалить.

Вот как должна быть ваша функция:

function checkArray(array, limit, toshow) {
  if (array.length > limit) {
    array.splice(0, toshow);
  }
  return array;
}

Демонстрация:

Это ваш код, обновленный с помощьюправильная функция:

var arrayEl = [];
var count = 0;

setInterval(function() {
  count = ++count;
  arrayEl.push(count);


}, 1000)
setInterval(function() {


  console.log(checkArray(arrayEl, 10, 5))



}, 1100);

function checkArray(array, limit, toshow) {
  if (array.length > limit) {
    array.splice(0, toshow);
  }
  return array;
}
0 голосов
/ 14 сентября 2018

Вы можете использовать ванильный JS:

let checkArray = (array, limit, toShow) => {
  if (array.length > limit) array.splice(toShow);
}
...