我有这个代码,它应该遍历数组中的每个项目,根据某些条件删除项目:
//iterate over all items in an array
//if the item is "b", remove it.
var array = ["a", "b", "c"];
array.forEach(function(item) {
if(item === "b") {
array.splice(array.indexOf(item), 1);
}
console.log(item);
});
Run Code Online (Sandbox Code Playgroud)
期望的输出:
a
b
c
Run Code Online (Sandbox Code Playgroud)
实际产量:
a
b
Run Code Online (Sandbox Code Playgroud)
显然,本机forEach方法在每次迭代后都不会检查项是否已被删除,因此如果是,则跳过下一个项.除了覆盖forEach方法或实现我自己的类而不是数组之外,还有更好的方法吗?
编辑 - 继续我的评论,我想解决方案是只使用标准for循环.如果你有更好的方法,请随时回答.
我打算为一个WebRTC应用程序运行我自己的TURN服务 - https://code.google.com/p/coturn/.手册说明了身份验证和凭据:
...
-a, --lt-cred-mech
Use long-term credentials mechanism (this one you need for WebRTC usage). This option can be used with
either flat file user database or PostgreSQL DB or MySQL DB or MongoDB or Redis for user keys storage.
...
Run Code Online (Sandbox Code Playgroud)
此客户端代码示例还建议TURN需要凭据:
// use google's ice servers
var iceServers = [
{ url: 'stun:stun.l.google.com:19302' }
// { url: 'turn:192.158.29.39:3478?transport=udp',
// credential: 'JZEOEt2V3Qb0y27GRntt2u2PAYA=',
// username: '28224511:1379330808'
// },
// { url: 'turn:192.158.29.39:3478?transport=tcp',
// credential: 'JZEOEt2V3Qb0y27GRntt2u2PAYA=',
// username: '28224511:1379330808' …Run Code Online (Sandbox Code Playgroud) 什么是确定的路线层次结构,使我有一个基本的URL的最佳方式/page/:id,然后像的URL /page/:id/delete和/page/:id/edit,而不必重复/页/:ID位中的所有路径?
我已尝试过以下内容,但id子路径中没有该参数:
pageActions = express.Router!
pageActions.get "/delete", (request, response) ->
request.params.id #undefined
app.use "/page/:id", pageActions
Run Code Online (Sandbox Code Playgroud)
我在路由指南中看不到任何关于这种行为的提及,但似乎在这里使用所有的参数是有用的,特别是因为允许在路径的"挂载路径"中使用params.
假设我这样做:
var timer = setTimeout(function() {
console.log("will this happen?");
}, 5000);
Run Code Online (Sandbox Code Playgroud)
然后在不到5秒后,另一个回调(例如来自NodeJS中的网络事件)触发并清除它:
clearTimeout(timer);
Run Code Online (Sandbox Code Playgroud)
是否有可能来自setTimeout调用的回调已经在此时执行的队列中,如果是这样,clearTimeout是否及时停止它?
为了澄清,我说的是setTimeout时间实际到期并且解释器启动执行它的过程的情况,但是另一个回调当前正在运行,因此消息被添加到队列中.这似乎是那些容易不被考虑的竞争条件类型之一.
我刚刚尝试过编写代码的挑战,以编写一个函数,该函数返回数字数组的最短左侧分区的长度,其所有元素都小于相应右侧分区中的所有元素。
给出的方案是在给定每月温度读数可变的情况下找到“冬季”和“夏季”之间的鸿沟,其规则是所有冬季温度均低于所有夏季温度。我们可以假设至少有一个正确的分区,目标是使冬季最短。
是否可以在O(N)时间中执行此操作,即处理时间随温度读数的数量线性增加?我想出的最快解决方案是为每个考虑的最高冬季温度找到最低夏季温度(在右侧分区中的最低温度):
function shortestWinterLength temps
maxWinterTemp = -Infinity
for i from 0 til temps.length
minSummerTemp = Infinity
for j from i + 1 til temps.length
minSummerTemp = Math.min minSummerTemp, temps[j]
maxWinterTemp = Math.max maxWinterTemp, temps[i]
if maxWinterTemp < minSummerTemp
return i + 1
Run Code Online (Sandbox Code Playgroud) 如果我想编写一个C程序与Linux上的X服务器通信并产生最简单的可视化结果,例如在显示器上设置一个像素,我该怎么做?
我想尽可能少地使用库,从头开始理解它,无论代码多么低效/混乱.
更新 - 通过"没有库",我的意思是基本上没有任何可用于X的辅助库,也没有图形工具包.
更新 - 答案是"通过unix socket",特别是/tmp/.X11-unix/X0(至少在这台机器上,大概是显示0).实际上绘制一个像素太复杂了,我想在这里得不到答案.
require对于<script>HTML文件中的标签执行的脚本,在Electron中如何工作?例如,我有:
-index.html
-langs/js.js
-langs/test.js
Run Code Online (Sandbox Code Playgroud)
我<script src="langs/js.js"></script>在index.html中,但是我想从langs / js.js中要求langs / test.js,但这不起作用:
require("./test");
它必须是require("./langs/test");即使从JS测试的相对路径就是“./test”。有没有一种方法可以使它工作而无需在每个文件中指定HTML文件的完整路径require?
node.js ×4
javascript ×2
algorithm ×1
arrays ×1
c ×1
electron ×1
event-loop ×1
express ×1
foreach ×1
html5 ×1
linux ×1
require ×1
settimeout ×1
turn ×1
url-routing ×1
webrtc ×1
xserver ×1