下划线,其中es6 / typescript替代项

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

下划线方法(在哪里)是否可以替代?

我想找到一个具有某些属性的数组,如下所示:

_.where(listOfPlays, {author: "Shakespeare", year: 1611});
=> [{title: "Cymbeline", author: "Shakespeare", year: 1611},
javascript typescript
2个回答
1
投票

您可以使用Array#filter。您将无法使用对象,但可以直接使用属性:

let results = listOfPlays.filter(play => play.author === "Shakespeare" && play.year === 1611);

或者,如果您实际上想要_.where的副本:

function where(array, object) {
  let keys = Object.keys(object);
  return array.filter(item => keys.every(key => item[key] === object[key]));
}

[wherearray筛选出与对象object中的每个键值匹配的对象。


0
投票

Array.filter,Array.each和Object.entries的基本概念

var plays = [
  { title: "world", author: "hello", year: 1611 },
  { title: "Cymbeline", author: "Shakespeare", year: 1611 },
  { title: "Bacon", author: "Shakespeare", year: 1611 },
  { title: "Dance", author: "Shakespeare", year: 1610 }
]


const getResults = (plays, filters) => {
  const entries = Object.entries(filters)
  return result = plays.filter( play => {
    return entries.every(([key, value]) => {
      return play[key] === value
    })
  })
}

var testOne = getResults(plays, {
  author: "Shakespeare", year: 1611
})

var testTwo = getResults(plays, {
  year: 1611
})

console.log(testOne)
console.log(testTwo)
© www.soinside.com 2019 - 2024. All rights reserved.