Articles of 数组

在node.js上保存float32array到磁盘的紧凑方法是什么?

JSON.stringify显然不是空间有效的。 使用Node.js序列化和存储float32array的最优雅的方法是什么? 编辑:由于“基于意见”和“缺乏对问题的理解”等原因,人们正在closures这个问题。 我认真相信第一个是一个missclick。 对于第二个,也许这更清楚: var fs = require("fs"); var len = 1000*1000*10; var big_array = new Float32Array(len); for (var i=0; i<len; ++i) big_array[i] = Math.random(); // OBVIOUSLY NOT SPACE EFFICIENT \/ fs.writeFileSync("big_array.json",JSON.stringify(big_array)); 这不是空间有效的,因为你将数字表示为string,所以8字节的浮点数将使用多达20个utf8字符,这是浪费。 问题是:如何以节省空间的方式存储数组?

node.js数组实际上hashmaps?

令我惊讶的是,这段代码实际上在node.js中起作用: var arr = new Array(); // also works: var arr = []; arr[0] = 123; arr['abc'] = 456; arr; // node.js: [ 123, abc: 456 ], chrome: [123] 我一直认为一个数组按顺序存储它的对象,只能通过一个整数键来访问,就像C ++中的std :: vector一样。 然而,在这里它就像一个地图或一个对象。 除了混淆之外,相同的代码在chrome中也能像预期的那样工作,使用单个条目123返回数组。我认为node.js和chrome javascript使用相同的内部引擎V8。 这里发生了什么?

追加到一个不是数组的JS对象?

我有一个像这样的对象 { "_id": "DEADBEEF", "_rev": "2-FEEDME", "name": "Jimmy Strawson", "link": "placeholder.txt", "entries": { "Foo": 0 } } 用$ .getJSON调用读入我的javascript。 所以我有JS对象“回复”,其中包含所有这些数据。 我需要附加项目,使“条目”扩展如下: { "_id": "DEADBEEF", "_rev": "2-FEEDME", "name": "Jimmy Strawson", "link": "placeholder.txt", "entries": { "Foo": 0, "Bar": 30, "Baz": 4 } } 我努力了 reply['entries'].push({"Bar": 0}); 但这是行不通的(我认为,因为没有一个数组) 有人可以提供一种替代方法吗?

比较chai中的数组

我正在用chai和chai-as-promised(以及更多的框架,但在这种情况下并不重要)编写一些testing,我需要检查从网页获得的数组是否与预定义的数组相同。 我试图使用expect(arrayFromPage).to.eventually.deep.equal(predefinedArray) ,但它不会工作,因为页面上的元素顺序有时是不同的(这是好的,我不需要检查他们是否是在相同的顺序)。 我已经find一种方法来解决问题,通过使用expect(listFromPage).to.eventually.include.all.members(predefinedArray) ,但我想知道是否有更好的解决scheme。 在我的解决方法中,最让我困扰的是,我只能确保listFromPage是listFromPage子集,而不是它们由相同的元素组成。 所以,我想知道是否有一个断言会通过[1,2,3]和[3,2,1] ,但不是[1]和[1,2,3]或[1,2,3,4]和[1,2,3] 。 我知道我可以使用第二个期望(比较长度或其他),但我想知道是否有单线解决scheme。

node.js拼接太慢,超过70000个项目

我在node.js中是新手 我试图插入70000项到数组中,然后删除所有这些: var Stopwatch = require("node-stopwatch").Stopwatch; var stopwatch = Stopwatch.create(); var a = [] stopwatch.start(); for (var i = 1 ; i < 70000 ; i++){ a.push((parseInt(Math.random() * 10000)) + "test"); } for (var i = 1 ; i < 70000 ; i++){ a.splice(0,1); } stopwatch.stop(); console.log("End: " + stopwatch.elapsedMilliseconds + " : " + […]

Javascript:for..in循环运行的次数比预期的多

在下面的代码中,user.roles的实际长度是1.但是,循环运行两次。 当我输出i的值时,第二次迭代显示为“diff”。 切换到普通的for循环解决了这种情况。 但是,我想知道for..in循环的问题是什么。 for (var i in user.roles) { if (user.roles[i].school.equals(schoolId)) { for (var j in user.roles[i].permissions) { for (var k in accessType) { if (user.roles[i].permissions[j].feature == featureKey) { if (user.roles[i].permissions[j][accessType[k]]) { return true; } } } } } } 更新:用户是一个对象,angular色是一个对象数组。 导致此问题的angular色实例如下所示: { "_id": "582d3390d572d05c1f028f53", "displayName": "Test Teacher Attendance", "gender": "Male", "roles": [ { […]

如何检查一个string是否与node.js中的任何一个正则expression式匹配?

我试图有效地检查一个string是否匹配任何正则expression式的数组,并在第一次遇到的匹配返回true(打破正则expression式的迭代) 我目前的代码: _.forEach(self._connectedClients, function(client) { if (client.authenticated) { var interested = _.forEach(client.interests, function(interest) { if (evt.event_type.search(interest) != -1) { return true; } }); if (interested) { self._sendJSON(client.socket, data); } } }); 兴趣是一系列正则expression式。 有什么build议么? 提前致谢

每个关联arrays的Lodash

在关联数组中有一个forEach循环在Lodash中吗? 我发现, 称为 “forEach”的函数仅适用于索引数组。 例如,如果我有一个数组myArray与值[1, 2, 3] ,并做 lodash.forEach(myArray, function(index) { console.log(index); }); 并运行该function(在Node ),我得到了预期的结果: 1 2 3 但是,当我尝试与关联数组,这是行不通的: lodash = require('lodash'); myArray = []; myArray['valOne'] = 1; myArray['valTwo'] = 2; myArray['valThree'] = 3; lodash.forEach(myArray, function(index) { console.log('7'); }); 正如你可以在Node看到的那样,即使它包含了除数组元素以外的东西,callback函数也不会被触发。 它似乎完全跳过循环。 首先,为什么会这样呢? 其次, Lodash是否还有另外一个函数来处理这个问题,或者,如果没有的话,有没有办法使用forEach函数来完成这个任务,而不需要改变stream程中的原始数组呢?

如何logging在winston的JavaScript对象和数组作为console.log呢?

我正在查看顶级的节点日志logging系统: npmlog , log4js , bunyan和winston并决定使用winston的npm月度下载量最多。 我想要设置的是自定义logging器,我将可以在开发环境上使用logger.debug(…) ,它不会在生产环境中logging任何东西。 当我在开发环境中时,这将有助于我,因为我将看到所有的输出,所以我不需要写任何东西。 这是我现在所拥有的: var level = 'debug'; if (process.env.NODE_ENV !== 'development'){ level = 'production'; // this will never be logged! } var logger = new winston.Logger({ transports: [ // some other loggings new winston.transports.Console({ name: 'debug-console', level: level, prettyPrint: true, handleExceptions: true, json: false, colorize: true }) ], […]

节点摩卡数组应该包含一个元素

我想做一个简单的断言 knownArray.should.include('known value') 该数组是正确的,但我根本无法找出正确的断言用来检查数组是否有这个值(索引不重要)。 我也尝试了should.contain但是这两个都抛出一个错误,即Object #<Assertion> has no method 'contain' should.contain Object #<Assertion> has no method 'contain' (或'include' ) 我怎样才能检查一个数组包含使用should的元素?