我有一个页面,其中包含一些由用户控制的元素.其中一个是文本输入字段,用户应该输入一个数字.如果用户只输入数字(EG 9000),但是用户使用逗号表示法(9,000),则一切正常,javascript不会将输入作为整数.
如何删除逗号和/或强制输入整数?我尝试使用parseint(),但它似乎不能用逗号.
问题取自编程访谈要素:
给定具有布尔值键的n个对象的数组A,对数组重新排序,以便首先出现具有错误键的对象.具有键true的对象的相对排序不应更改.使用O(1)额外空间和O(n)时间.
我做了以下操作,它保留了对象为true的对象的相对排序,并使用了O(1)额外空间,但我相信它的时间复杂度为O(n*n!).
public static void rearrangeVariant4(Boolean[] a) {
int lastFalseIdx = 0;
for (int i = 0; i < a.length; i++) {
if (a[i].equals(false)) {
int falseIdx = i;
while (falseIdx > lastFalseIdx) {
swap(a, falseIdx, falseIdx-1);
falseIdx--;
}
lastFalseIdx++;
}
}
}
Run Code Online (Sandbox Code Playgroud)
任何人都知道如何在O(n)时间内解决它?
在我的代码中,基于特定条件,我想跳到done函数,而不管所有then函数.
该问题的原始版本在编辑中.以下是我正在处理的实际问题.抱歉给你带来不便
实际问题:
我正在读取文件并进行处理.如果文件的内容符合某些条件,我必须对文件系统进行一系列操作(比如读写几个文件),然后执行done函数.如果条件失败,我必须跳过所有系列操作,我必须done直接执行该功能.
我result在所有then函数中返回一个对象(比如说),然后then我更新result并返回它.所以,当所有的then事情都完成后,done就会有所累积result.最后,done将处理result并打印它.
因此,如果最初不满足条件,done则只需打印result(这将是空的).
Q()
.then(readFile)
.then(function (contents) {
var processResult = process the contents;
if (processResult) {
return {};
} else {
// How can I skip to `done` from here
}
})
.then(function (results) {
// do some more processing and update results
return …Run Code Online (Sandbox Code Playgroud) 我想在Javascript中编写一个函数,允许我传入一个数学运算符和一个整数列表,并为该列表中的每个项目应用运算符.
从总和的角度来考虑它,这就是我想出的:
function accumulate(list, operator){
var sum = 0;
for each(var item in list){
sum = accumulator(sum, item);
}
print(sum);
}
Run Code Online (Sandbox Code Playgroud)
测试此代码会产生以下错误:
var list = new Array();
list[0] = 1;
list[1] = 2;
list[2] = 3;
Run Code Online (Sandbox Code Playgroud)
js> accumulate(list, +);
js: "<stdin>", line 9: syntax error
js: accumulate(list, +);
js: ..................^
js: "<stdin>", line 9: Compilation produced 1 syntax errors.
Run Code Online (Sandbox Code Playgroud) 什么是使用的优势列表理解在forPython中循环?
主要是为了让它更具人性化,还是有其他理由使用列表理解而不是循环?
var arrObj = [{a:1, b:2},{c:3, d:4},{e:5, f:6}];
Run Code Online (Sandbox Code Playgroud)
我怎么能把它合并成一个obj?
//mergedObj = {a:1, b:2, c:3, d:4, e:5, f:6}
Run Code Online (Sandbox Code Playgroud) 我发现了一个很难的方法,就是不能简单地将一个对象的函数传递给Bluebird then.我假设Bluebird then正在做一些魔术,并在匿名函数中包装传入的函数.所以我附加了一个.bind函数,它工作.这是用蓝鸟做这个的正确方法吗?还是有更好的方法吗?
var Promise = require("bluebird")
var Chair = function(){
this.color = "red"
return this
}
Chair.prototype.build = function(wood){
return this.color + " " + wood
}
var chair = new Chair()
//var x = chair.build("cherry")
Promise.resolve("cherry")
.then(chair.build.bind(chair)) // color is undefined without bind
.then(console.log)
Run Code Online (Sandbox Code Playgroud)
我知道这些都不是异步的,所以请使用同步示例,我的用法是异步.
我正在尝试使用Socket.io v.7中的新"房间"功能来创建动态聊天室,但我在我的示例中遇到静态房间问题.根据用户选择的URL,他们应该在room1或room2中结束.用户在聊天中输入的任何内容都应该广播给同一房间内的用户.我有2个浏览器(chrome&ff),每个浏览器都有一个打开到/ room1和/ room2的标签,但我输入的内容似乎没有广播到其他标签.我究竟做错了什么?
服务器代码
var app = require('express').createServer();
var io = require("socket.io").listen(app);
io.sockets.on('connection', function (socket) {
// join to room and save the room name
socket.on('join room', function (room) {
socket.set('room', room, function() { console.log('room ' + room + ' saved'); } );
socket.join(room);
})
socket.on('message', function(data) {
console.log("Client data: " + data);
// lookup room and broadcast to that room
socket.get('room', function(err, room) {
//room example - https://github.com/learnboost/socket.io
// neither method works for me
socket.broadcast.to(room).emit('new fan');
io.sockets.in(room).emit('new non-fan'); …Run Code Online (Sandbox Code Playgroud) 我想知道是否有人可以帮助我在数字唱歌时为这个现有字符串添加一个前导零(例如1-9).这是字符串:
str(int(length)/1440/60)
Run Code Online (Sandbox Code Playgroud)