首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >StartsWith()不使用takeWhile()

StartsWith()不使用takeWhile()
EN

Stack Overflow用户
提问于 2019-02-05 04:52:09
回答 3查看 124关注 0票数 0

我正在尝试迭代一个不可变列表,并让它返回一个新列表,其中包含以特定字符串开头的任何条目。举个例子,我只是想找出以字母'D‘开头的所有状态--我希望下面的代码返回一个大小为1的列表,并将'Delaware’作为一个条目返回,但返回的是一个空列表。

代码语言:javascript
复制
const states = Immutable.fromJS([
    "Alabama",
    "Alaska",
    "Arizona",
    "Arkansas",
    "California",
    "Colorado",
    "Connecticut",
    "Delaware"]);
    
function filter() {
  const testA = 'A';
  const filteredOptions = states.takeWhile((option) =>  option.startsWith(testA));
  console.error(filteredOptions.size); // is 4 as I would expect
  
  const testD = 'D';
  const filteredOptions2 = states.takeWhile((option) =>  option.startsWith(testD));
  console.error(filteredOptions2.size); // is 0 when I expect 1
};

filter();
代码语言:javascript
复制
<script src="https://cdnjs.cloudflare.com/ajax/libs/immutable/3.8.2/immutable.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.6.3/umd/react.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.6.3/umd/react-dom.production.min.js"></script>

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-02-05 04:54:01

计算机的思想:

阿拉玛巴是从A开始的吗?是的,我会接下去的。阿拉斯加从A开始吗?是的,我会接下去的。亚利桑那州从A开始吗?是的,我会接下去的。阿肯色州从A开始吗?是的,我会接下去的。加州从A开始吗?不,所以我停下来。 阿拉巴马州从D开始吗?不,所以我停下来。

你想要的是filter而不是takeWhilefilter将接受所有满足命题的元素;takeWhile只接受序列开始时的元素。

票数 2
EN

Stack Overflow用户

发布于 2019-02-05 04:56:10

有时候你只需要发邮件就能发现你的错误。我一击中post就意识到,takeWhile一遇到错误就会退出。A's之所以有效,是因为它们是列表的开始。

票数 2
EN

Stack Overflow用户

发布于 2019-03-13 07:13:28

您可以为此使用过滤器

代码语言:javascript
复制
const statesWhichStartWithLetterD = states.filter(state => state.startsWith('D'));
console.log(statesWhichStartWithLetterD.toJS()); // ["Delaware"]
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54527845

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档