【问题标题】:Iterating the keys from a javascript hashmap gives empty string for last element从 javascript hashmap 中迭代键会为最后一个元素提供空字符串
【发布时间】:2019-04-30 23:25:36
【问题描述】:

我需要数组中的 javascript/typescript 哈希映射中的键。我使用 Map.Keys() 方法,并迭代键以填充名为:searchTerms 的数组。出于某种原因,数组中的最后一个值始终是一个空字符串。

当我在调试器中查看 hashMap 时,我看到的正是我所期望的;字符串类型的键和字符串数组的值,没有空键。

public setSearchTerms(searchMap: Map<string, Array<string>>) {
        if(searchMap && searchMap.size) {
            let myKeys = myMap.keys();
            this.searchTerms = [...myKeys];

           /*
            for(let k of myKeys) {
                if(k.length > 0) {
                    this.searchTerms.push(k);
                }
            }
            */
        }
    }

当我按原样运行代码时,searchTerms 数组包含地图中的所有键,以及一个空字符串。使用 for-of 循​​环(当前注释掉)也会放入空字符串,但我放入了长度检查以解决问题。我只想了解空字符串的来源。我可以让它工作,但它让我烦恼的是我无法弄清楚空字符串的来源。

【问题讨论】:

  • 我似乎无法重现这个,我觉得你的代码中还有其他东西干扰了这个
  • 我必须同意@Aplet123
  • 好的,很高兴知道这一点。我会再看看我的 hashMap。我使用来自 FileReader.readAsText() 的 csv 数据填充哈希图,因此可能在上游某处(可能是隐藏的 \n)。谢谢你们俩的关注。

标签: javascript typescript hashmap iteration


【解决方案1】:

看起来这是一个cr/lf 问题。对源文件做了一个hexdump,最后还有一个额外的0a0d。找到一个以前的堆栈帖子来解释它。感谢您指出正确的方向。 Link

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-13
    • 1970-01-01
    • 1970-01-01
    • 2015-07-26
    • 2010-09-23
    相关资源
    最近更新 更多