我被告知不要for...in在JavaScript中使用数组.为什么不?
TypeScript, - strictNullChecks模式.
假设我有一个可以为空的字符串数组(字符串| null)[].以表达式为string []的方式删除所有空值的单表达式方法是什么?
const array: (string | null)[] = ["foo", "bar", null, "zoo", null];
const filterdArray: string[] = ???;
Run Code Online (Sandbox Code Playgroud)
Array.filter在这里不起作用:
// Type '(string | null)[]' is not assignable to type 'string[]'
array.filter(x => x != null);
Run Code Online (Sandbox Code Playgroud)
数组理解可能有效,但TypeScript不支持它们.
实际上,通过从联合中删除具有一个特定类型的条目,可以将该问题推广到过滤任何联合类型的数组的问题.但是让我们关注具有null和未定义的联合,因为这些是最常见的用例.
我总是这样成功地对我的数组进行排序(当我不想要标准的词典排序时):
var arr = […] // some numbers or so
arr.sort(function(a, b) {
return a > b;
});
Run Code Online (Sandbox Code Playgroud)
现在,有人告诉我这是错的,我需要return a-b改为.这是真的,如果是的话为什么?我测试了我的比较功能,它有效!另外,为什么我的解决方案在出错时会如此常见?
我试图通过一个简单的方法得到最高的数字NaN:
data = [4, 2, 6, 1, 3, 7, 5, 3];
alert(Math.max(data));
Run Code Online (Sandbox Code Playgroud)
我已经读过如果数组中的一个值无法转换为数字,它将返回typeof,但在我的情况下,我已经仔细检查NaN以确保它们都是数字,所以可能是我的问题?
我有兴趣使用JavaScript WebAudioAPI来检测歌曲节拍,然后在画布中渲染它们.
我可以处理画布部分,但我不是一个很大的音频人,真的不明白如何在JavaScript中制作节拍探测器.
我已经尝试过这篇文章但是,对于我的生活,我不能连接每个函数之间的点来制作一个功能程序.
我知道我应该向你展示一些代码,但说实话,我没有任何代码,我所有的尝试都失败了,并且在前面提到的文章中有相关的代码.
无论如何,我真的很感激一些指导,甚至更好的演示如何实际检测歌曲节拍WebAudioAPI.
谢谢!
我必须找到非常大的数组的最大值和最小值.为此,我正在使用
Math.max.apply(Math, my_array);
Math.min.apply(Math, my_array);
Run Code Online (Sandbox Code Playgroud)
它在Firefox和IE上运行良好,但在Chrome上我总是会Maximum call stack size exceeded出错......我当前的数组有221954个元素,这不是我最大的元素.
有人知道如何在Chrome上解决此错误吗?如何优化最大值和最小值的搜索?
对于那些无法相信的人,请在Chrome的控制台中试试:
var xxx = []
for(var i=0; i<300000; i++){
xxx.push(Math.random());
}
Math.max.apply(Math, xxx);
Run Code Online (Sandbox Code Playgroud)
---> RangeError:超出最大调用堆栈大小
我thumbnail span3每个Twitter Bootstrap行有3个元素,但<p>文本是可变的,它打破了布局.如何将每个thumbnail缩略图设置为最大缩略图的高度,以便它们正确流动?
<div class="box_line" style="float: left; border: 1px solid red;">
<div class="thumbnail span3">
<img src="http://placehold.it/260x180" alt=""/>
<div class="caption">
<h5>Thumbnail label</h5>
<p>Cras justo odio, dapibus ac facilisis in, egestas eget quam. Donec id elit non mi porta gravida at eget metus. Nullam id dolor id nibh ultricies vehicula ut id elit.</p>
</div>
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
我还没有找到一个可用的jQuery插件来执行此操作,本主题 中的解决方案对我也不起作用.
我真的很好奇这些功能是如何运作的?我知道有很多关于如何使用它们的问题,我已经知道如何使用它们,但我无法在任何地方找到如何实际在数组上实现此功能,例如,如果没有这样的功能?如果没有帮助者,你会如何编写这样的函数?
我写了这个函数,它返回-1.
function sayHello() {
let arrayEdificiosNiveis = [11,10,10];
var indexMenor = arrayEdificiosNiveis.indexOf(Math.max(arrayEdificiosNiveis));
console.log(indexMenor);
}
sayHello();Run Code Online (Sandbox Code Playgroud)
我期望 0,而不是 -1。我该如何解决这个问题?
几天前,我在webapps.stackexchange.com上询问了以下问题:https://webapps.stackexchange.com/questions/54130/is-there-a-way-to-remove-overlaying-events-in-google-calendar
到目前为止我没有得到任何好的答案,所以我决定编写自己的小脚本,根据重叠事件的数量改变事件的宽度.
我想避免重叠盒子并希望它们堆叠.
这是初步测试:
以下是一个基本脚本,包含说明:
$('[class^="tg-col"]').each(function(){ // each day column
//(Mon, Tue, etc. has class tg-col or tg-col-weekend.
var ItemArray = [];
$(this).find(".chip").each(function(){ //each event box has chip class.
var top = $$(this).position().top; //Get top pixels
var bottom = $$(this).height() + top; //get end of the event.
var arr = ItemArray.push({
class: $$(this).attr("class").split(" ")[0],
start : top,
end:bottom
});
});
var result = getOverlaps(ItemArray); //get overlaps counts number of overlapping events.
$$.each(result, function(index, value){
var ec = result[index].eventCount; …Run Code Online (Sandbox Code Playgroud) javascript ×7
arrays ×3
css ×2
html ×2
math ×2
audio ×1
comparison ×1
for-loop ×1
iteration ×1
jquery ×1
loops ×1
max ×1
min ×1
nan ×1
optimization ×1
sorting ×1
typescript ×1