【发布时间】:2017-02-19 14:24:24
【问题描述】:
所以我创建了这个 JS 代码来获取一个映射,其中字符串中的每个单词都是键,单词出现的次数是值。
var txtArray = txtVar.split(" ");
var txtMap = {};
for (var i = 0; i<txtArray.length;i++){
if(txtArray[i] in txtMap)
txtMap[txtArray[i]] += 1;
else
txtMap[txtArray[i]] = 1;
}
现在我需要对它们进行排序,以便以某种方式按 10 个最长的单词和 10 个最常用的单词等对它们进行排序,我想我可以通过创建一个 for 循环来找到一种方法来将它们存储在其中数组,然后在出现新单词时将最旧的“顶部”单词向上或向下推,但我认为必须有一种不那么尴尬的方式来完成这项任务?
【问题讨论】:
-
Object.keys(txtMap).sort((a, b) => txtMap[a] < txtMap[b] ? -1 : txtMap[a] > txtMap[b] ? +1 : 0). -
请注意,in 也会检查原型链,因此
txtMap[txtArray[i]] += 1在明显随机且难以找到的情况下可能会产生意想不到的结果。
标签: javascript arrays object for-loop dictionary