我正在尝试迭代不可变列表并让它返回一个新列表,其中包含以特定字符串开头的任何条目。对于此处的示例,我只是试图查找以字母“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
,而不是takeWhile
。 filter
将获取满足命题的所有元素; takeWhile
仅限序列开头的那些。
关于javascript - StartsWith() 不能与 takeWhile() 一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54527845/