我正处于学习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);
};
答案 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;
}, {})
);