javascript - 如何将多个数组方法链接到箭头函数
问题描述
在我的箭头函数中,我尝试使用 .forEach 方法,然后将 .map 方法链接到它,但我收到错误消息 "(card).map(card => {"
“卡未定义”。
我也尝试使用 .find 方法const findCards = cards.find(card => card.symbol === '7' ).map(card => {
错误消息“地图不是函数”
我能够将 .map 方法链接到 .filter 方法。
const filteredCards = cards.filter(card => card.number).map(card => {
我可以在没有 .map 的情况下控制台日志 .forEach .. 所以我有点困惑..
HTML
<div class="container" id="forEach-method"></div>
<div class="container" id="find-method"></div>
JAVASCRIPT
const cards = [
{ symbol: '1', number: true},
{ symbol: '2', number: true},
{ symbol: '3', number: true},
{ symbol: '4', number: true},
{ symbol: '5', number: true},
{ symbol: '6', number: true},
{ symbol: '7', number: true},
{ symbol: '8', number: true},
{ symbol: '9', number: true},
{ symbol: '+', number: false},
{ symbol: '-', number: false},
{ symbol: '*', number: false}
];
//.FOREACH METHOD
const cardsContainerforEach = document.querySelector('#forEach-method');
const forEachCards = cards.forEach(card).map(card => {
return '<div class="card">' + '<span>' + card.symbol + '<span>' + '</div>';
})
cardsContainerforEach.innerHTML = forEachCards.join('\n');
//.FIND METHOD
const cardsContainerFind = document.querySelector('#find-method');
const findCards = cards.find(card => card.symbol === '7' ).map(card => {
return '<div class="card">' + '<span>' + card.symbol + '<span>' + '</div>';
})
cardsContainerFind.innerHTML = findCards.join('\n');
解决方案
Foreach 不返回任何东西,这就是为什么你不能链接它,而 find 返回单个对象而不是数组,这就是你不能链接它的原因。您可以将 .map 方法链接到 .filter 方法,因为 map 返回一个数组。
该行cards.forEach(card)
正在寻找一个名为 card 的函数。您可能正在尝试的是在 foreach 中注入一个 fatarrow 函数,它应该看起来像这样cards.forEach(card => /* do something with card */)
。
const cards = [
{ symbol: '1', number: true},
{ symbol: '2', number: true},
{ symbol: '3', number: true},
{ symbol: '4', number: true},
{ symbol: '5', number: true},
{ symbol: '6', number: true},
{ symbol: '7', number: true},
{ symbol: '8', number: true},
{ symbol: '9', number: true},
{ symbol: '+', number: false},
{ symbol: '-', number: false},
{ symbol: '*', number: false}
];
const foreach = cards.forEach(card => card);
const find = cards.find(card => card.symbol === '-');
const map = cards.map(card => parseInt(card.symbol));
console.log('forEach:', foreach); // Should return undefined.
console.log('find:', find); // Should return a single object.
console.log('map:', map); // Should return an array object.
//.filter() METHOD
const filterCards = cards.filter(card => !card.number ).map(card => {
return '<div class="card">' + '<span>' + card.symbol + '<span>' + '</div>';
})
console.log(filterCards.join('\n'));
在您尝试的选项中,只有 map 返回一个数组,这意味着您在 map 上拥有更高阶的数组函数。
推荐阅读
- visual-studio - 构建 VS 扩展需要哪些 Visual Studio 工作负载?
- java - JVM 提交的堆内存大于 Xmx
- mysql - 等效于 Postgres 的 only_full_group_by
- android - 如何更改自定义对话框的 TextView 上的消息?
- python - 如何在 matplotlib 中使离散颜色图连续?
- react-native - 为什么我的图像在包裹在 Animated.View 中时不显示?
- reactjs - 使用 OverlayTrigger 时如何设置 Overlay 容器属性?
- python - 在使用 Selenium 的某些元素之后通过 CSS 选择器查找元素
- delphi - Delphi、TAdoConnection、Azure SQL 托管实例
- docker - Dockerfile 在 COPY 中构建 ARG --from=