Tag: 数组

比较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的元素?

mongoosefind并创buildmultidimensional array

我想获得用户标识,以及包含位置内特定位置的数组对象。 我想要完成的是以下内容: 查询将返回数组位置的结果。 如果不存在userid,则创build它,然后返回匹配位置的数组。 如果位置ID号码不存在。 创build一个新的,然后返回匹配位置的数组。 我怎样才能做到这一点? 当前查询: easyCrime.findOne({ userid: userid, "locations.location": location }, {"locations.$.location": 1}).then(function (err, stats) { } }); 模型: userid: { type: String, default: '57c1c0f3b6b20c011242bf22' }, locations: [ { userid: { type: String, default: '57c1c0f3b6b20c011242bf22' }, location: { type: Number, default: 1 }, easycrime: [ { optioname : { type: String, default: […]

用params添加函数给Array Javascript(Node.js)

我想用params把函数推送到一个数组而不让它们执行。 这是我迄今为止所尝试的: var load_helpers = require('../helpers/agentHelper/loadFunctions.js'); var load_functions = []; load_functions.push(load_helpers.loadAgentListings(callback , agent_ids)); load_functions.push(load_helpers.loadAgentCount(callback , agent_data)); 但是在这种方式下,function在推动时被执行。 这个问题提供了类似的例子,但没有params。 在这个例子中,我怎样才能包含params?

在NodeJS中parsingJSON对象的数组

我想知道如何parsingNodeJS中的JSON对象的数组? 我想发布JSON数组到服务器,并能够使用接收的数组作为调节器JavaScript数组。 提前致谢。 这是我使用stringify函数将数组转换为string的前端部分 document.getElementById("sendJson").addEventListener("click", function () { $.post("/echo", JSON.stringify(QuestionsArray), function (data) { alert(data); }); }) 这是我试图将数组的JSON对象转换为数组的后端部分 app.post('/echo', function (req, res) { var Array = JSON.parse(JSON.stringify(req.toString())); res.end(Array[0]["QuestionText"].toString()); }); 这是我试图发送到服务器的数组: [ { "QuestionText":"What is your Name", "QuestionType":1 }, { "QuestionText":"Where are you from", "QuestionType":2, "ChoiceList":[ "US", "UK" ] }, { "QuestionText":"Are you married", "QuestionType":3, "ChoiceList":[ "Yes", […]