小编bea*_*mit的帖子

获得两个对象数组之间差异的有效方法?

我有两个对象数组:

var a = [  {'id': 20},   {'id': 15},   {'id': 10},   {'id': 17},   {'id': 23}  ];

var b = [ {'id': 90},   {'id': 15},    {'id': 17},   {'id': 23}  ];  
Run Code Online (Sandbox Code Playgroud)

我想得到一个在a中但不在b中的对象.此示例的结果将是:

{'id': 20}和{'id': 10}.

因为数组可能很大,所以我需要一种有效的方法来做到这一点.

javascript arrays diff

14
推荐指数
2
解决办法
2万
查看次数

Vim正则表达式替换为n个字符

我有一个正则表达式用某个字符串替换某个模式,但我想让它更具动态性.

例如,假设我有这个正则表达式:

%s/hello/-----/g

但是,我会喜欢这样做:

%s/hello/-{5}/g

这意味着用5个破折号替换你好.

有没有办法做到这一点?

最后,我想做这样的事情:

%s/(hello)*/-{\=strlen(\0)}/g

它将hello用短划线替换只有s 的字符串的任何实例,其长度等于匹配字符串的长度.

regex vim

14
推荐指数
2
解决办法
3000
查看次数

Winform DataGridView数据绑定到复杂类型/嵌套属性

我试图将a数据绑定DataGridView到包含具有以下结构的类的列表:

MyClass.SubClass.Property
Run Code Online (Sandbox Code Playgroud)

当我单步执行代码时,SubClass永远不会请求.

我没有得到任何错误,只是没有看到任何数据.

请注意,我可以在具有相同层次结构的编辑表单中进行数据绑定.

.net c# data-binding datagridview .net-3.5

13
推荐指数
2
解决办法
1万
查看次数

递增:x ++ vs x + = 1

我已经读过很多开发人员使用x + = 1而不是x ++来清楚.我知道x ++对于新开发人员来说可能不明确,而且x + = 1总是更清晰,但两者之间的效率是否存在差异?

使用for循环的示例:

for(x = 0; x < 1000; x += 1) VS for(x = 0; x < 1000; x++)

我知道它通常不是那么大的交易,但如果我反复调用一个执行这种循环的函数,它可能会在长期内累加起来.

另一个例子:

while(x < 1000) {
    someArray[x];
    x += 1;
}
Run Code Online (Sandbox Code Playgroud)

VS

while(x < 1000) {
    someArray[x++];
}
Run Code Online (Sandbox Code Playgroud)

可以用x + = 1代替x ++而不会造成任何性能损失吗? 我特别关注第二个例子,因为我使用两行而不是一行.

如何增加数组中的项?会someArray[i]++比someArray[i] += 1在大循环中完成时更快吗?

arrays optimization increment

13
推荐指数
2
解决办法
6227
查看次数

正则表达式 - 将一个字符的序列替换为具有相同数量的另一个字符

假设我有一个这样的字符串:

=====
Run Code Online (Sandbox Code Playgroud)

我想用这个替换它:

-----
Run Code Online (Sandbox Code Playgroud)

我只想替换它,如果它有超过一定数量的那个角色(我们会说> 3).

所以,这些应该是替代品:

=== -> ===
==== -> ----
===== -> -----
Run Code Online (Sandbox Code Playgroud)

该应用程序是我想用markdown替换markdown中的所有1级标题,而不更改嵌入的代码块.

我知道我可以这样做:

/=/-/g,但这匹配任何带有等号(if (x == y))的东西,这是不可取的.

或这个:

/===+/----/g,但这并不考虑原始匹配字符串的长度.

这可能吗?

regex replace

13
推荐指数
1
解决办法
4001
查看次数

为什么mouseup事件无法阻止click事件

的jsfiddle

<div class='wrapper'>
    <button class='child'>Click me</button>
</div>

function h(e) {
    e.preventDefault();
    e.stopPropagation();
    e.stopImmediatePropagation();
    alert(e.type);
    return false;
}

document.querySelector('.wrapper').addEventListener('mouseup', h, false);
document.querySelector('.child').addEventListener('click', h, false);
Run Code Online (Sandbox Code Playgroud)

我希望这可以防止"点击"事件被触发,但事实并非如此.但是,更改mouseup为mousedown确实会阻止click事件.

我也尝试将useCapture参数设置为true,这也不会产生所需的行为mouseup.我在Chrome和Firefox上测试了这个.在我提交错误之前,我想我会问这里.

这是当前浏览器中的错误,还是记录的行为?

我已经回顾了W3C标准(DOM级别2),我无法找到任何可以解释这种行为的东西,但我可能错过了一些东西.

在我的特殊情况下,我试图解耦两个侦听同一元素上的事件的代码,我认为在优先级的部分使用捕获事件将是解决这个问题的最优雅的方法,但后来我跑了陷入这个问题.FWIW,我只需支持官方支持的FF和Chrome版本(包括FF的ESR).

javascript javascript-events mouseevent

13
推荐指数
1
解决办法
1万
查看次数

如何在NodeJS中模拟"睡眠"?

我正在构建一个浏览器游戏,其中包含玩家周围环境的迷你地图.我需要跟踪其他玩家的位置,并在有人移动时更新此迷你地图.我在NodeJS和CouchDB中实现它.我的设计如下:

我有一个数据库,可以更改所有游戏数据.在这个数据库中,我有一个文档,其中包含二维数组中的基本地图数据,网格上的每个方块都由此数组中的元素表示.因为我可以有不同万吨的用户都同时动一下地图,我需要一些方法,以确保我没有得到一个读作别人在写它(如果一吨的用户正在阅读我能得到错误的信息和写入单个文件).我决定在这个数据库中有单独的文档,它们代表各个方块,每个文档都有那个正方形"播放"的播放器和与该方块相关的其他一些数据.实质上,地图文档仅用作方形文档的查找表.这使我能够在不必重写整个地图文档的情况下更改单个文档,从而解决了同时读取和写入的问题.

但问题是,我需要获取一个迷你地图供用户用作参考.这个迷你地图将包含周围广场的文件.由于我同时需要所有这些,我想我会从数据库中获取所有9个方块并将其返回到单个ajax响应中.我的问题是减少了阻塞IO的数量.现在,我有一个嵌套循环,从数据库中请求我需要的方块.这是我的代码(传递位置和地图):

var miniMap = new Array();
var keyMap = new Object();
var numDone = 0;
for(i = position.y - 1, y = 0; i < position.y + 1 && i < map.length; i++, y++){
    miniMap[i] = new Array();
    for(v = position.x - 1, x = 0; v < position.x + 1 && v < map.length; v++, x++){
        keyMap[map[i][v].id] = {'x': x, 'y': y};
        gameDB.getDoc(map[i][v].id, function(er, doc){
            var tPos = keyMap[doc._id];
            miniMap[tPos.y][tPos.x] = doc;
            numDone++;
        });
    }
}
Run Code Online (Sandbox Code Playgroud)

不过我的问题是getDoc是非阻塞的,所以我不知道它何时将方形数据设置为miniMap.我想过做这样的事情: …

couchdb node.js

12
推荐指数
1
解决办法
2万
查看次数

移动野生动物园与主屏幕webapp

我正在为iOS开发一个webapp,我注意到在运行移动游戏和从主屏幕运行之间有一些奇怪的事情.

是否有任何资源可以提供在模式之间切换的通用接口?

如果没有,是否有任何资源详细说明两种模式之间的所有差异和陷阱?

我遇到的事情:

长轮询有点奇怪.看这个例子.

window.innerWidth&window.innerHeight不一致.

  • 移动Safari-垂直方向按预期工作,水平方向不工作
    • 垂直
      • 宽度-768
      • 身高 - 946
    • 横
      • 宽度-769 ??
      • 身高 - 518 ??
  • 主屏幕上的Web应用程序 - 这些总是有意义的.
    • 垂直
      • 宽度-768
      • 身高-1004
    • 横
      • 宽度 - 1024
      • 身高 - 748

其他东西:

我发现了这个,这很有意思.

这个问题也揭示了奇怪的行为.

javascript web-applications mobile-safari ios

12
推荐指数
1
解决办法
4176
查看次数

为什么我们不能在子类中分配较弱的权限

我有一个类,它有一个方法,默认情况下访问说明符是public.现在,我想在子类中扩展此类,并且我想覆盖此方法以使访问说明符为"private".编译此代码时,我收到编译错误:

"尝试分配较弱的访问权限".

有人可以向我解释在子类中分配较弱的权限有什么问题吗?

以下是导致编译错误的代码:

class Superclass 
{
    void foo() 
    {
        System.out.println("Superclass.foo");
    }
}

class Subclass extends Superclass 
{
    private void foo() 
    {
        System.out.println("Subclass.foo");
    }
}
Run Code Online (Sandbox Code Playgroud)

java inheritance

12
推荐指数
3
解决办法
1万
查看次数

我可以在移动平台上运行HTTP服务器吗?

我正在构建一个无法放入应用商店的webapp(出于安全考虑).webapp需要访问比localStorage或其他离线存储方式更多的数据(假设最多1GB的数据).

我对解决方案的想法是为Android和iOS编写HTTP服务器代码,然后使用AJAX获取/发布数据,这样我就可以访问设备的内部存储.

我的问题是,

这可以在iOS和Android上完成吗?

通过'Can',我的意思是技术上(对所需组件的API访问,并且它可以始终在后台运行)和合法(它是否与App Store和Android Marketplace的服务条款一致).

我对平台和功能都不太了解,但如果我确信它有可能,我可以弄明白.

这样做的原因是,无论是否存在wifi或蜂窝塔,都可以随时向webapp提供大量数据.

android http httpserver ios

11
推荐指数
1
解决办法
1万
查看次数