javascript - StartsWith() 不能与 takeWhile() 一起使用

标签 javascript string immutable.js startswith

我正在尝试迭代不可变列表并让它返回一个新列表,其中包含以特定字符串开头的任何条目。对于此处的示例,我只是试图查找以字母“D”开头的所有州,我希望下面的代码返回一个大小为 1 且“Delaware”作为条目的列表,但它返回带有一个空列表。

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();
<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>

最佳答案

计算机的思维:

Does Alamaba start with A? Yes; I'll take it and continue. Does Alaska start with A? Yes; I'll take it and continue. Does Arizona start with A? Yes; I'll take it and continue. Does Arkansas start with A? Yes; I'll take it and continue. Does California start with A? No, so I stop.

Does Alabama start with D? No, so I stop.

您需要filter,而不是takeWhilefilter 将获取满足命题的所有元素; takeWhile 仅限序列开头的那些。

关于javascript - StartsWith() 不能与 takeWhile() 一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54527845/

相关文章:

javascript - ImmutableJS Map() 和 fromJS() 有什么区别?

javascript - 异步调用后 DOM 更新

javascript - jQuery longclick 在表和表行中的其他按钮上触发

JavaScript:从表配置字符串中提取列标题

c++ - strtok 并替换 C++ 中的子字符串

javascript - 有什么方法可以将 immutable.js 与 lodash 一起使用?

javascript - 如何重置 typeahead.js 中使用的 Hogan.js 模板

javascript - ngStorage 和 $window.localStorage 的区别

java - 最多一个字符的正则表达式匹配字符串

javascript - Immutable.js 映射 : Find key from value