小编Ash*_*kes的帖子

数组像Javascript中的对象

我想知道jQuery如何构造其类似数组的对象.我正在尝试解决的关键是它如何设法让控制台将其解释为数组并将其显示为这样.我知道它与长度属性有关,但在玩了一下后我无法弄明白.

我知道这比像对象这样的普通数组没有技术优势,如下例所示.但我认为,当用户进行测试和调试时,这是一个重要的语义元素.

像Object这样的普通数组.

function foo(){
    // Array like objects have a length property and it's properties use integer
    // based sequential key names, e.g. 0,1,2,3,4,5,6 just like an array.
    this.length = 1;
    this[0] = 'hello'
}
// Just to make sure add the length property to the prototype to match the Array 
// prototype
foo.prototype.length = 0;

// Give the Array like object an Array method to test that it works     
foo.prototype.push = Array.prototype.push

// Create an Array like object …
Run Code Online (Sandbox Code Playgroud)

javascript arrays jquery javascript-objects

31
推荐指数
1
解决办法
5389
查看次数

JavaScript性能长时间运行的任务

前几天我注意到了一个问题(减少Javascript CPU使用率),我很感兴趣.

基本上这个人想要逐个字符地加密一些文件.显然,一次性完成这一切将锁定浏览器.

他的第一个想法是在块中一次大约1kb的字符串,然后暂停X ms,这样它将允许用户在处理之间保持与页面的交互.他还考虑过使用webWorkers(最好的主意),但显然不是跨浏览器.

现在我真的不想进入为什么这在javascript中可能不是一个好主意.但我想知道我是否能想出一个解决方案.

我记得道格拉斯克罗克福德在js conf观看了一段视频.该视频与node.js和事件循环有关.但我记得他在谈论将长时间运行的函数分解为单个块,因此新调用的函数将进入事件循环的末尾.而不是通过长时间运行的任务阻塞事件循环,防止其他任何事情发生.

我知道这是一个值得我调查的解决方案.作为一名前端开发人员,我从未真正体验过JS中长时间运行的任务,并且热衷于了解如何分解它们以及它们的运行方式.

我决定尝试一个递归函数out,它从0ms的setTimeout内部调用自己.我认为这会在事件循环中为其他任何想要在运行时发生的事件提供中断.但我也认为,虽然没有其他任何事情你将得到最大的计算.

这就是我想出的.

(我要为代码道歉.我正在试验控制台,所以这很快而且很脏.)

function test(i, ar, callback, start){
    if ( ar === undefined ){
        var ar = [],
        start = new Date;
    };
    if ( ar.length < i ){
        ar.push( i - ( i - ar.length )  );
        setTimeout(function(){
            test( i, ar, callback, start);
        },0);
    }
    else {
        callback(ar, start);
    };
}
Run Code Online (Sandbox Code Playgroud)

(您可以将此代码粘贴到控制台中,它将起作用)

本质上,函数所做的是获取一个数字,创建一个数组并调用自身,同时array.length < number将计数推送到数组中.它将第一次调用中创建的数组传递给所有后续调用.

我测试了它,它似乎完全按照预期工作.只有它的表现相当差.我测试了它..

(再次这不是性感的代码)

test(5000, undefined, function(ar, start ){ 
    var finish …
Run Code Online (Sandbox Code Playgroud)

javascript recursion performance

20
推荐指数
2
解决办法
3514
查看次数

用于解析单个密钥的正则表达式:Javascript中的JSON值

我想看看是否有可能查找个人keys一出JSON字符串中的Javascript并返回它ValueRegex.有点像构建JSON搜索工具.

想象一下以下JSON

"{
    "Name": "Humpty",
    "Age": "18",
    "Siblings" : ["Dracula", "Snow White", "Merlin"],
    "Posts": [
        {
            "Title": "How I fell",
            "Comments": [
                { 
                    "User":"Fairy God Mother",
                    "Comment": "Ha, can't say I didn't see it coming"
                }
            ]
        }
    ]
}"
Run Code Online (Sandbox Code Playgroud)

我希望能够搜索JSON字符串并仅提取单个属性.

我们假设它function已经是,它看起来像.

function getPropFromJSON(prop, JSONString){
    // Obviously this regex will only match Keys that have
    // String Values.
    var exp = new RegExp("\""+prop+"\"\:[^\,\}]*");
    return JSONString.match(exp)[0].replace("\""+prop+"\":","");    
} …
Run Code Online (Sandbox Code Playgroud)

javascript regex json

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

Cypher查询创建多个节点和关系

我正在尝试编写Cypher查询以在一个查询中创建多个节点和关系.CREATECypher中使用子句的文档指出,不可能在单个CREATE子句中创建不同类型的多个节点.

然而它暗示我应该能够把它分解成多个CREATE.我读过的几个类似的答案也指向了相同的解决方案.我试过这样做并继续得到响应错误.

Error: If you create multiple elements, you can only create one of each.
Run Code Online (Sandbox Code Playgroud)

这是我正在尝试做的简要概述.

  1. 创建一个item节点.
  2. 创建多个representation节点.
  3. 在创建的item节点和现有stack节点之间创建关系.
  4. 在创建的item节点和创建的representation节点之间创建多个关系.

这是我正在使用的查询,它试图将CREATE流程的所有单个部分分解为单个步骤.

START stack=node({stack})
CREATE (item {item}) 
CREATE (representations {representations})
CREATE (stack)-[:Item]->(item)
CREATE (item)-[:Representation]->(representations)
RETURN item, representations
Run Code Online (Sandbox Code Playgroud)

我已经尝试了上述查询的几种变体,包括在查询开头创建itemrepresentation节点.

我真的很感激任何建议.如果可以避免的话,我真的不想诉诸于多个数据库调用.

neo4j nosql graph-databases cypher

6
推荐指数
1
解决办法
2510
查看次数

为node.js安装NPM时出错

我正在尝试npm使用此要点中的"git all way"方法在ubuntu 11.04 上安装

我一直在运行后收到此错误sudo make installnpm

$ sudo make install
! [ -d .git ] || git submodule update --init --recursive
node cli.js install -g -f
bash: node: command not found
make: *** [install] Error 127
Run Code Online (Sandbox Code Playgroud)

我知道这有点不对劲bash,但我对bash并不是很好.

编辑

node在终端中运行命令会node shell按预期启动

linux bash node.js npm ubuntu-11.04

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

Javascript方括号表示法多个动态属性

这可能听起来有点不寻常,我以前从来不需要用这种方式使用方括号表示法,并绞尽脑汁我想不出能够产生预期结果的方法.

我正在实现一个回调包装器来维护this传递方法作为回调时的引用

例如

foo.prototype.wrap = function(name){
    var wrapper,
        self = this;

    wrapper = function(){
        self[name](arguments);
    };

    return wrapper;
};

// usage

foo.wrap('bar');

// executes foo.bar maintaining 'this' as a reference to foo 
Run Code Online (Sandbox Code Playgroud)

我遇到的问题是foo有一些嵌套方法

例如

foo.bar.close();
Run Code Online (Sandbox Code Playgroud)

我试图想办法让wrap方法支持嵌套方法

例如

foo.wrap('bar.close')

// or

foo.wrap('bar','close');
Run Code Online (Sandbox Code Playgroud)

因此该foo.wrap函数需要动态添加对应于传入的长度或参数的方括号.

例如

self[x][y][z](arguments);
Run Code Online (Sandbox Code Playgroud)

我想不出办法做到这一点.有任何想法吗 ?

我怀疑这是不可能的.

javascript syntax callback square-bracket

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

Cypher查询嵌套关系(像查询一样)

我试图找出是否有Cypher查询来执行地图查询功能.给出示例数据.

                        (stack)
                      /    |   \
                     /     |    \
                (item)  (item)  (item)
                 /  \      |       / \
                /    \     |      /   \
           (node) (node) (node) (node)(node)
Run Code Online (Sandbox Code Playgroud)

到目前为止,我对匹配nodes 的查询是.

START stack=node({stack}) 
MATCH (stack)-[:Item]-(item)-[:Representation]-(representation)
RETURN representation
Run Code Online (Sandbox Code Playgroud)

(representation在这个查询中相当于node我在上图中没有足够的空间来保持书写表示).

现在正如预期的那样,此查询仅返回与所有item节点相关的表示的平面列表.例如

[ representation, representation, representation.... ]
Run Code Online (Sandbox Code Playgroud)

我真正想要的是一个查询返回的嵌套结构items及其相关representation小号如

[ 
    [ item, representations ],
    [ item, representations ],
    [ item, representations ] 
]
Run Code Online (Sandbox Code Playgroud)

确切的结构return并不重要.这样我就可以轻松地映射item到它representations而不需要为每个items 发送查询representations.

这可能看起来像一个微不足道的问题,但在查看Cypher备忘单并观看视频和谷歌搜索Cypher教程之后.我还没有找到关于如何使用Cypher执行此类查询(或实际上大多数查询)的简单解释. …

neo4j cypher

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