массив es6 возвращает все элементы до определенного условного или первого элемента, если все элементы удовлетворяют условию - PullRequest
0 голосов
/ 11 апреля 2019

с учетом следующих данных:

const array = [
  {name: one, completed: false},
  {name: two, completed: false},
  {name: three, completed: false},
  {name: four, completed: false},
]

const arrayTwo = [
  {name: one, completed: true},
  {name: two, completed: true},
  {name: three, completed: false},
  {name: four, completed: false},
]

Мне нужно иметь возможность вернуть:

//from array
[
  {name: one, completed: false}
]

//from arrayTwo
[
  {name: one, completed: true},
  {name: two, completed: true},
  {name: three, completed: false},
]

Итак, на вопрос: Как я могу отобразить / отфильтровать / уменьшить эти массивы, чтобы вернуть все элементы вплоть до , включая первый элемент с условием соответствия параметров:

completed: false

... или первый, если все они удовлетворяют условию:

completed: false

Как всегда, высоко ценится любое направление, поэтому спасибо заранее!

Ответы [ 2 ]

3 голосов
/ 11 апреля 2019
  const result = array.slice(0, array.findIndex(it => !it.completed) + 1);
0 голосов
/ 11 апреля 2019

Вы можете использовать простой цикл for, продолжая увеличивать значения до op, и как только вы найдете completed return op

const array = [{name: 'one', completed: false},{name: 'two', completed: false},{name: 'three', completed: false},{name: 'four', completed: false},]

const arrayTwo = [{name: 'one', completed: true},{name: 'two', completed: true},{name: 'three', completed: false},{name: 'four', completed: false},]

const fn = arr => {
  let op = []
  for(let i=0; i<arr.length; i++){
    op.push(arr[i])
    if(!arr[i].completed){
      return op
    }
  }
}

console.log(fn(array))

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