Iterate over an array and return only matched values?
本问题已经有最佳答案,请猛点这里访问。
我正在使用JSON,并希望迭代一个数组,只返回我正在寻找的值。 例如,如果我有一个对象数组,并且每个对象都有特定书籍的信息,我如何迭代该数组中的每个对象并仅返回匹配的对象?
我已经尝试过使用地图,但是这样做(但不能按我需要的方式工作):
1 2 3 4 5 6 7 8 9 | // books is from my imported JSON object const favoriteBook = books.map((book) => { if (book.title == this.props.params.id) { return book; } }); console.log(favoriteBook) |
但是,当我在console.log(favoriteBook)时,我看到一个数组返回一个匹配的对象,加上所有不匹配的'undefined'。 如何在找到匹配后立即停止并返回该匹配? 想知道如何使用"过滤器"(如果可能)(?)或类似方式来执行此操作。
谢谢。
我想这取决于你想要匹配多本书还是只有一本书。
匹配多本书
您可以通过
1 | const favoriteBooks = books.filter((b) => { return b.title == this.props.params.id;}); |
匹配一本书
否则,您可能希望
1 | const favoriteBook = books.find((b) => { return b.title == this.props.params.id;}); |
注意:请特别注意如何使用
你想要
1 2 3 | const favoriteBook = books.find((book) => { return book.title == this.props.params.id }.bind(this)); //.bind for context of 'this' |
尝试使用
试试这个:
1 | const favoriteBook = books.find((book) => (book.title === this.props.params.id)); |