es6数组返回所有项目,直到某个条件或第一项,如果所有项目满足条件

问题描述 投票:0回答:2

给出以下数据:

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

一如既往,所有方向都非常感谢,所以提前感谢!

javascript ecmascript-6
2个回答
3
投票
  const result = array.slice(0, array.findIndex(it => !it.completed) + 1);

0
投票

你可以使用一个简单的for循环,继续推送值到op,一旦你发现completed返回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))
© www.soinside.com 2019 - 2024. All rights reserved.