Tag: 数组

在使用自定义键推入一些值之后,Javascript数组似乎是空的

我遇到了一个奇怪的问题,即使我将某些内容推送到具有自定义索引键的数组,它仍然显示为空数组。 如果我知道索引,那么我可以达到内容。 function search (source, pattern) { let regexp = new RegExp(pattern, 'g'); let messages = []; let match; while ((match = regexp.exec(source)) !== null) { let date = match[2]; let ms = parseDate(date).getTime(); if(Object.prototype.toString.call(messages[ms]) !== '[object Array]') messages[ms] = []; messages[ms].push(match[0]) } console.log(messages); console.log(messages[1414860420000]); } 用我的模式在我的源代码中调用这个函数会缠绕多个匹配,并将它们推送到主数组中正确的子数组中。 但如果在此之后,我尝试console.log(messages); 它将返回[ ]而不是[object Array]的列表。 然而,调用一个现有的密钥,我可以达到messages数组内的数据。 我错过了什么? 为什么数组中的内容“不可见”? 编辑: […]

如何提取nodejs上的数组

我做的显示用户信息的API,所以我写这样的代码 res.json({"Status" : true , "User" : rows }); 然后我得到结果 { "Status": true, "User": [ { "userid": 821786, "fullname": "undefined", } ] } 但是我想要这样的结果 { "Status": true, "userid": 821786, "fullname": "undefined" } 我怎样才能做到这一点 ? 我试过了 res.json({"Status" : true ,"Type":"Google", rows }); 但它给了我 { "Status": true, "rows": [ { "userid": 821786, "fullname": "undefined", } ] } […]

如何获得节点js中的第二个数组?

我在node.js中创build一个路由 这是我的代码: schedule.get('/conference/schedule_participants/:circle/:schedId', function(req, res) { if(req.schedId){ getParticipants( req.params, function(contacts){ results.contacts=contacts; res.json(results); }); }else{ res.json(results); } }); 我的浏览器的输出是这样的: "schedSetting":{ "id":59, "sched_date":"2016-03-03 09:03:00", "agenda":"meeting", }, "contacts":[ { "id":218, "accountcode":"", "extentype":0, }, } ] } 我如何删除schedSetting数组,以便我的输出将只是像这样的联系人数组: "contacts":[ { "id":218, "accountcode":"", "extentype":0, }, } ] 谢谢 :)

在Node.JS中同步“GET”

我试图循环通过一个HTML块的图像,并获得每个图像的原生宽度。 我有完美的DOM构build,我在NPM上使用图像大小模块来检索图像宽度。 问题是需要花费时间来获取图像并获取宽度,所以在获取宽度之前,代码会继续处理。 因此,我无法调整HTML块中的宽度,因为函数在获取第一个图像之前运行并完成。 无论如何,停止代码处理,直到这个GET请求完成? 我不希望For循环继续,直到图像完成。 var elem_tags = doc.getElementsByTagName("img"); var elem_tags_length = elem_tags.length; for (var i=0; i < elem_tags_length; i++) { var imgUrl = options.elem_tags[i].getAttribute('src'); http.get(imgUrl, function (response) { // My Code To Manipulate <img> tags var chunks = []; response.on('data', function (chunk) { chunks.push(chunk); }).on('end', function() { var buffer = Buffer.concat(chunks); console.log(imgSize(buffer).width); // […]

NodeJS函数被socketio事件中断

我在看似并发的nodejs游戏服务器中看到了一些奇怪的行为。 这很奇怪,因为Nodejs应该在一个线程中运行,因为它不使用任何并发。 问题是我有一个使用setImmediate()重复调用的更新函数。 在这个函数中,我在两个地方使用了一个数组。 但是,当“disconnect”事件触发时(也就是客户端与服务器断开连接时),同样的数组也会被修改。 所以恰巧在时序alignment的情况下,断开事件在更新函数中访问数组的第一个位置触发,但在第二个位置之前触发,数组被修改,所以服务器在尝试数组时尝试被访问在第二位。 下面是一些可能使这张图片清晰的代码: function update(){ for(var i = 0; i < gameWorlds.length; i++){ gameWorlds[i].update(); console.log("GAMEWORLDS LENGTH BEFORE: " + gameWorlds.length); NetworkManager.sendToClient(gameWorlds[i].id, "gameupdate", gameWorlds[i].getState()); console.log("GAMEWORLDS LENGTH AFTER: " + gameWorlds.length); gameWorlds[i].clearGameState(); } } setImmediate(update); //in the NetworkManager module, the disconnect event handler: socket.on("disconnect", function(){ for(var a = 0; a < sockets.length; a++){ […]

Javascript / Node.js数组内存pipe理

我有一个使用数组作为队列的场景,而且我对这个场景有一个关于内存的问题。 首先,我在全局中创build一个数组对象,并创build一个生产者,将元素不间断地推送到数组中。 var arr = []; function runningProducer() { setInterval(itemProducer, 50); function itemProducer() { var item = generateItem(); arr.push(item); } function generateItem() { return { a: Math.random(), }; } } 然后,我创build一个客户在1秒内清除数组 function runningCustomer() { setInterval(clearQueue, 1000); function clearQueue() { var t = arr.concat(arr); arr = []; } } 并且运行上述function一段时间,我发现内存一直在增长。 setInterval(() => { var mem = […]

循环与if语句的效率

我有一个用例,我想知道一组数据是否与一个非常小的条件列表匹配(为了说明起见,假设它小于20)。 我正在客户端和服务器端(NodeJS)上执行JavaScript。 我试图在两个选项(或其他任何你可能拥有的选项)之间进行select,但我不确定复杂性和计算时间会有多不同。 我有一种感觉,他们微不足道。 选项1:重复条件列表 var conditions = [{ prop: 'a', check: '===', val: 'foo' }, { prop: 'b', check: '!==', val: 'bar' }]; for (var i=0;i<conditions.length;i++) { // Check conditions[i] if (conditions[i].check === '===') { if (data[conditions[i].prop] === conditions[i].val) { // Keep checking } else { // Fail } } else if (conditions[i].check === […]

TypeError:比较数组时,无法读取未定义的属性“0”?

我有一个具有JSON值的数组 category = [ {"categoryName":"abcd","productName":"chicken biriyani","price":100,"quantity":"medium"}, {"categoryName":"biriyani","productName":"mutton biriyani","price":130,"quantity":"medium"} ] 我必须检查上述类别数组所需的参数。 所以我创build了一个必需的参数数组。 var reqarray = ['categoryName','productName','price','quantity']; 我创build了用于检查reqarray的值和类别的每个值的示例代码,但它不工作 var categoryList = [ {"categoryName":"abcd","productName":"chicken biriyani","price":100,"quantity":"medium"}, {"categoryName":"biriyani","productName":"mutton biriyani","price":130,"quantity":"medium"} ]; for(var i in categoryList){ var reqarray =['categoryName','productName','price','quantity']; for(var j in arr){ if(categoryList[i].reqarray[j]=='null' || categoryList[i].reqarray[j] == " "){ console.log("data is null"); } else if(categoryList[i].reqarray[j] == undefined){ console.log("required parameters"); } else{ console.log("ok"); […]

合并具有相同ID的数组

这是我的arrays 。 我想要合并具有相同_id的数组,即86ded3fdfc5f92724491f82我该怎么做? 我正在这样做来创build数组。 dinnerDrug.push({ '_id': value._id, 'name': value.medicine_name, 'count': value.dose_dinner_count, 'type': value.medicine_type, 'consume': value.dose_dinner_consume, 'comment': value.medicine_comment }); dinnerArray.push({ '_id': value.doctor_id, 'doctor_name': value.doctor_name, 'doctor_dept': 'Cardiologist', 'prescription': dinnerDrug }); 我试图删除这样的重复 morningArray.forEach(function(val) { if (val._id == value.doctor_id) { morningArray.prescription.push(morningDrug) } else { morningArray.push({ '_id': value.doctor_id, 'doctor_name': value.doctor_name, 'doctor_dept': 'Cardiologist', 'prescription': morningDrug }); } }); 但重复的数组不会被删除,而是说错误为推送未定义。 我在做什么错误,我该如何解决这个问题? 预期的输出应该是这样的: […]

在javascript中find两个数组中缺less的元素

我在Node.js中有一个问题..我的问题是两个数组比较。 例如; 我原来的arrays是; var a = ["1","2","3","4","5"]; 另一个arrays是; var b = ["3","1","4","6","8","7"]; 所以,结果消息我想要的是:“2和5是缺less原始数组..” 那么在比较两个数组之后,我怎么能得到这个消息呢?