如何在JS中循环字符串或将字符串转换为数组?或者找到更好的解决方案来解决这个问题

时间:2015-05-17 17:45:28

标签: javascript

我正处于学习JavaScript的第14个小时,并且遇到了一些挑战。

此代码的目的是找出输入中出现numbr的频率。

如果输出一旦需要为0,则输出正确。 (不要问我这是为什么?!他们想要那样,可能有原因。)

我认为解决方案不是最优雅的。你一定可以帮助我,告诉我如何更好地写它。我不得不添加" "到输入的第一个和最后一个位置然后 - 将其转换为数组 - 再次删除它们或者它将为数组创建一个新的空项目(我认为)。 有没有更好的方法来实现这一目标?

var input =" 12 34 56 78 12 34 1 87 12 "
var digits= input.trim();
    digits= digits.split(" ");
var arrayLength= digits.length;
var output ="";

for(var n=0; n<arrayLength; ++n){
    var outputD =-1;  
    var inputLocal = input;

    while (inputLocal.search(" " + digits[n] +" ") >= 0) {
        inputLocal = inputLocal.replace(" " +digits[n]+" ", ""); 
        ++outputD;
    } 
output += " " + outputD;
console.log(output);
};

2 个答案:

答案 0 :(得分:1)

您可以将对象用作计数的地图,然后使用id创建新数组,然后使用var Popover = function (element, options) { this.init('popover', element, options) } if (!$.fn.tooltip) throw new Error('Popover requires tooltip.js') Popover.VERSION = '3.3.4' Popover.DEFAULTS = $.extend({}, $.fn.tooltip.Constructor.DEFAULTS, { placement: 'right', trigger: 'click', content: '', template: '<div class="popover" role="tooltip"><div class="arrow"></div><h3 class="popover-title"></h3><div class="popover-content"></div></div>' }) ,例如:

map

答案 1 :(得分:1)

console.log(
  " 12 34 56 78 12 34 1 87 12 "

  .trim()
  .split(/\s+/)

  .reduce(function (collector, item) {

    if (item in collector) {
      ++collector[item]
    } else {
      collector[item] = 0; // 1
    }
    return collector;

  }, {})
);