Tag: 数组

如何保持Javascript数组sorting,没有sorting

我有一个Node.js应用程序,我必须经常做以下事情: – 检查特定的数组是否已经包含某个元素 – 如果元素确实存在,更新它 – 如果元素不存在,将其推入数组,然后对其进行sorting使用下划线_.sortBy 为了检查数组是否已经存在,我使用这个二进制search函数: http : //oli.me.uk/2013/06/08/searching-javascript-arrays-with-a-binary-search/ 这样,当数组的大小增长时,sorting变得越来越慢。 我假设arrays大小可能增长到每个用户最多20,000个项目。 最终会有成千上万的用户。 该数组是通过一个非常短的string键来sorting的。 如果需要,可以将其转换为整数。 所以,我需要一个更好的方法来保持数组的sorting,而不是每次将新元素推到它时进行sorting。 所以,我的问题是,如果编辑我使用的二进制searchalgorithm,我该如何编辑这个二进制searchalgorithm,以使我能够在新元素应该被放置的地方得到数组索引,如果它不在数组中? 或者有什么其他的可能性来实现这一点。 当然,我可以使用某种循环,从头开始,遍历数组,直到find新元素的位置。 所有的数据存储在MongoDB中。 换句话说,我想保持数组sorting,而不是每次推新元素时都进行sorting。

在node.js中的类实例之间共享数组

我在node.js中有一个奇怪的问题: person.js var Person; Person = (function() { Person.prototype.name = ""; Person.prototype.friends = []; function Person(name) { if (name) { this.name = name; } } Person.prototype.sayHello = function() { return console.log("Hello, my name is " + this.name + " and I have " + this.friends.length + " friends"); }; Person.prototype.addFriend = function(name) { this.friends.push(name); }; […]

在Node.js中asynchronous添加到数组中

我对这种types的编程非常新,我从嵌套调用中填充数组时遇到了一些麻烦。 我很确定这需要使用callback来完成,但是我无法绕过它的大脑。 closures也必须在这里发挥作用。 我试图在网上search一个类似的例子,但没有发现太多。 这是我的原始代码。 我尝试了一些不同的方法,但没有把它closures。 TaskSchema.statics.formatAssignee = function(assignees) { var users = []; assignees.forEach(function(uid) { mongoose.model('User').findById(uid, function(err, user) { users.push({ name: user.name.full , id: user.id }); }); }); return users; }

Node.JSstring数组sorting不工作

嗨,我绝对是node.js的初学者今天我试了下面的代码 var fs, arr; var dir, str; var cont, item; fs=require('fs'); cont=fs.readFileSync('unsort.txt').toString(); arr=cont.split('\n'); arr.sort(); for(str=arr.shift();str&&(item=arr.shift());) str+='\n'+item; fs.writeFileSync('sort_by_script.txt', str); 上面的node.js代码从node.exe的目录中以stringforms读取一个文件。 按换行符('\ n')拆分string以获取数组。 对数组进行sorting并将sorting后的数组打印到文件中。 因此,整个脚本读取一个文件对条目进行sorting,并将sorting的条目保存在另一个文件中。 问题是sorting顺序不正确。 我尝试使用MS Excel手动sortingunsort.txt的内容,通过它我得到了正确的sorting顺序。 任何人都可以帮助我为什么arr.sort()不能正常工作。 你可以下载包中的unsort.txt,sort_by_script.txt,sort_by_ms_excel.txt和node.exe [Sort.rar] [1] 注意:unsort.txt没有数字。 所有只是字母。 来自unsort.txt的例子: appjs gbi node frame require process module WebSocket webkitAudioContext webkitRTCPeerConnection webkitPeerConnection00 webkitMediaStream MediaController HTMLSourceElement TimeRanges

在javascript中将数组转换为嵌套对象

我有典型的组织hierarchy 。 例如。 D,E is reporting to B. B,C is reporting to A. A是最顶端的节点。 但是,我收到这个数据作为一个平面数组与指向父母的属性。 [{ name: "A", parent: null }, { name: "B", parent: "A" }, { name: "C", parent: "A" }, { name: "D", parent: "B" }, { name: "E", parent: "B" }] 但我想将其转换为single nested object或tree 。 根节点具有儿童embedded的子属性,每个子节点都有自己的子属性。 { name: "A", children: [{ […]

Node.js中稀疏数组的内存消耗

我写了一个生成数组的小程序,运行时间相当长(几乎永远;-)): var results = []; var i = 1; while (true) { console.log(i++); results.push([]); } 当我创build一个长度为i的稀疏数组而不是一个空数组时,程序崩溃得相当快: var results = []; var i = 1; while (true) { console.log(i); results.push(new Array(i++)); } 其实我起床到i等于17424,然后我得到一个错误消息告诉我 FATAL ERROR: CALL_AND_RETRY_LAST Allocation failed – process out of memory Abort trap: 6 和Node.js带我回到控制台。 由于唯一的区别是第二个产生比第一个更大的空数组,所以这意味着长度为n的空稀疏数组占用长度为1的空数组的空间的n倍。 我是对的这个(具体到Node.js)? 还有一个问题:如果我跑步 var results = []; var i […]

数组内使用lodash数组的联合

我怎样才能使用lodash数组内的数组? 例如: input: var x = [ [1,2,3,4], [5,6,7], [], [8,9], [] ]; 预期产出: x = [1,2,3,4,5,6,7,8,9]; 目前我的代码执行以下操作: return promise.map(someObjects, function (object)) { return anArrayOfElements(); }).then(function (arrayOfArrayElements) { // I tried to use union but it can apply only on two arrays _.union(arrayOfArrayElements); });

检查一个数组是否包含除JavaScript之外的其他东西?

我有一个数组,最有可能总是看起来像: [null, null, null, null, null] 有时这个数组可能会改变成类似于: ["helloworld", null, null, null, null] 我知道我可以使用for循环,但是有没有办法使用indexOf来检查数组中是否有不等于null的东西。 我正在寻找像这样的东西: var index = indexof(!null);

将对象数组转换为与nodejs / pg / unnest兼容的数组

关于从nodejs / pg中的多个参数中更新多行 ,我需要运行以下命令: update portfolios p set votes = s.votes from unnest(array[(5, 1), (15, 1), (25, 2)]) s (votes int, id int) where p.id = s.id 我的数组是1美元,如下所示: update portfolios p set votes = s.votes from unnest($1) s (votes int, id int) where p.id = s.id 不过,我的数组最初由对象组成,如下所示: [{votes: 5, id: 1}, {votes: 15, id: 1}, […]

从nodejs有效地serialise(和读取)int数组

我正在考虑在nodejs中构build一个应用程序,该应用程序需要传输包含整数数组的大型(> GB)文件。 至关重要的是,arrays需要最优化地进行序列化,所以不是基于ascii的,理想地,对于较小的整数(这将是绝大多数数据)使用8位,但仍然能够表示更大的数字。 这个问题可能比nodejs更多,但是如何在nodejs中进行呢? 是否有从磁盘自定义字节编码stream文件的现成解决scheme? 或者更好,整数数组? 理想情况下,应该可以将stream的每个部分解码为磁盘绑定而不是cpu绑定,即使是ssd也是如此。