function,

partition

FreeVue FreeVue Follow Jul 31, 2019 · 1 min read
partition
Share this

partition. 각 요소에 대해 제공된 함수의 진실성에 따라 요소를 두 개의 배열로 그룹화합니다.

Array.reduce()를 사용하여 두 배열의 배열을 만듭니다. Array.push()를 사용하여 fn이 true를 반환하는 요소를 첫 번째 배열에 추가하고 fn이 두 번째 배열에 false를 반환하는 요소를 추가합니다.

const partition = (arr, fn) =>
  arr.reduce(
    (acc, val, i, arr) => {
      acc[fn(val, i, arr) ? 0 : 1].push(val)
      return acc
    },
    [[], []],
  )

// 예시
const users = [
  {user: 'barney', age: 36, active: false},
  {user: 'fred', age: 40, active: true},
]
partition(users, (o) => o.active) // [[{ 'user': 'fred',    'age': 40, 'active': true }],[{ 'user': 'barney',  'age': 36, 'active': false }]]

[출처: http://30.surge.sh/]