Tag: 数组

在节点js中创build一个JSON数组

我需要在我的服务器中创build一个JSONstring写在节点js发送到客户端,当这个请求它。 问题是这个JSON依赖于服务器中可用的数据,因此JSON数组的大小总是不一样的。 我一整天都在努力,但是虽然我感觉很近,但我还是不明白。 以下是一个示例查询: json={"players":[ {"name":"Messi", "goals":8}, {"name":"Ronaldo", "goals":22}, {"name":"Costa", "goals":20}, {"name":"Neymar", "goals":13}, {"name":"Arabi", "goals":6}, {"name":"Bale", "goals":3}, {"name":"Toquero", "goals":0}]}; 我会通过以下方式将它发送到服务器: res.contentType('application/json'); res.send(json); 我想要创build的JSON数组取决于名为“目标”的散列,其中玩家名称是关键字,目标数量是值。 因此,如果只有3个玩家,那么JSON数组只能有这个大小。 我一直在尝试像这样在线创buildJSON数组: result= ""; for(i in goals){ result = result+ '{ name:' + i + ", goals:" + goals[i] + '},'; } result= result.substring(0, result.length – 1); res.contentType('application/json'); res.send( { 'players': [ […]

Node.js承诺:asynchronous推送到数组并保存

我目前正尝试从我通过请求接收的项目列表推送到一个数组(Mongo模型中的属性)。 从这些项目,我循环通过他们看到哪一个目前在数据库中,如果不是这样的话,那么我创build一个新的项目,并尝试保存它。 我正在使用承诺来完成这个任务,但我无法弄清楚为什么在所有的承诺完成后数组是空的。 var q = require('q'); var items_to_get = ['1', '2', '3']; // example array var trans = new Transaction({ items : [] }); var promises = []; for (var i = 0; i < items_to_get.length; i++) { var ith = i; //save current i, kinda hacky var deferred = q.defer(); //init promise //find […]

使用JavaScript从json数据dynamic嵌套ul \ li列表

我需要从json数组中创build一个dynamic嵌套的ul \ li列表。 注意! 我可以使用jQuery来完成我自己的转换,但在这种情况下,我需要使用string,因为它是node.js,而且我无法访问DOM。 此外arrays可以有不同的深度。 这是我使用的json数据,以及转换后应该如何处理。 var data = [{"id": "1", "name": "name_1", "parent_id": "0", "depth": "0"}, {"id": "2", "name": "name_2", "parent_id": "0", "depth": "0"}, {"id": "3", "name": "name_3", "parent_id": "1", "depth": "1"}, {"id": "4", "name": "name_4", "parent_id": "3", "depth": "2"}]; <ul> <li>name_1</li> //depth 0 <li>name_2 //depth 0 <ul> <li>name_3 //depth 1 <ul> <li>name_3</li> […]

NodeJS:如何从数组中删除重复

我有一个数组: [ 1029, 1008, 1040, 1019, 1030, 1009, 1041, 1020, 1031, 1010, 1042, 1021, 1030, 1008, 1045, 1019, 1032, 1009, 1049, 1022, 1031, 1010, 1042, 1021, ] 现在我想从中删除所有重复的东西。 NodeJs中有没有什么方法可以直接做到这一点。

对象的大数组JSON.parse()使用更多的内存比它应该的方式

我生成一个〜200'000元素的对象数组(使用map内部的对象文字符号,而不是new Constructor() ),并保存一个JSON.stringify的d版本到磁盘,它占用了31 MB包括换行符和每个缩进级别( JSON.stringify(arr, null, 1) )。 然后,在一个新的节点进程中,我将整个文件读入一个UTF-8string并传递给JSON.parse : var fs = require('fs'); var arr1 = JSON.parse(fs.readFileSync('JMdict-all.json', {encoding : 'utf8'})); 根据小牛的活动监视器,节点内存使用量约为1.05GB! 即使在terminal上键入,我感觉在我的古老的4 GB RAM机器上还是比较懒的。 但是,如果在一个新的节点进程中,我将文件的内容加载到一个string中,在元素边界处JSON.parse , JSON.parse每个元素,表面上获得相同的对象数组: var fs = require('fs'); var arr2 = fs.readFileSync('JMdict-all.json', {encoding : 'utf8'}).trim().slice(1,-3).split('\n },').map(function(s) {return JSON.parse(s+'}');}); 节点只使用〜200 MB的内存,并没有明显的系统滞后。 这种模式在节点的许多重新启动中持续存在: JSON.parse整个数组在parsing元素的过程中占用了一大笔内存,而且更高效地处理内存。 为什么在内存使用上有如此巨大的差距? 这是与JSON.parse防止高效隐藏类生成在V8中的问题? 如何在没有切分string的情况下获得良好的内存性能? 我必须使用stream式JSONparsing吗? 为了便于实验,我已经将JSON文件置于Gist中 ,请随时克隆它。

处理表单中的input数组?

比方说,我必须在同一个页面上编辑一批相同types的对象: //-jade form(action='', method='POST') for each message_id in messages_ids input(type='text', name='message', id='#{message_id}') input(type='text', name='author', id='#{message_id}') input(type='submit', value='Send') 我知道我不能在后端处理这种forms的id的原因 – 它不会被发送到后端。 但是,有没有办法做到这一点? 我想在后端得到这样的东西: //js for (var i = 0; i <= req.body.message.length; i++) { console.log ( 'ObjectID: ' + req.body.message[i].id, //-? null, just to show what I'm trying to get 'Message: ' + req.body.message[i], 'Author: ' […]

如何通过Vue.js组件(使用Vueify)显示数据?

我无法获得数据显示在我的Vue组件。 我正在使用Vueify,并试图从listings.vue .vue组件加载列表的数组,我不断收到错误。 此外,我不明白如何通过computed方法拉入数据。 任何帮助,将不胜感激。 这是我在控制台中得到的错误: [Vue warn]: The "data" option should be a function that returns a per-instance value in component definitions. [Vue warn]: $mount() should be called only once. 这是我的app.vue // app.vue <style> .red { color: #f00; } </style> <template> <div class="container"> <div class="listings" v-component="listings" v-repeat="listing"></div> </div> </template> <script> module.exports = { replace: […]

为什么数组数组,更多的数据sorting比对象数组更快,在Javascript中的数据更less?

对于我在node.js中的应用程序,我必须根据某个数值(即数字级别)以降序排列数组的元素。 由于我的应用程序对性能至关重要,因此我决定构build我的数据结构,以便优化sorting。 我假设数组中每个元素所包含的数据越less,sorting的速度就越快。 为了testing我的假设,我运行了三个不同的长度为10000的数组: 编辑 :伙计们,似乎有什么东西与我原来的testing有瑕疵。 第一个testing比以下testing花费的时间要长得多。 因此,我已经修改了我的testing代码,在实际sorting之前有一个“缓冲区”sorting。 此外,为了减lesstesting本身的sorting可能导致的任何偏差,我将testing的顺序进行了固定数量的试验。 我已经修改了相应的结果。 完整的源代码在这里: https : //raw.githubusercontent.com/youngrrrr/js-array-sort-bench-test/master/arraySortTest.js var buffer = [781197, … ]; var sparseArray = [781197, … ]; var sparseArray2 = [{'a' : 781197}, …]; var denseArray = [{'a' : 781197, 'b': ['r', 'a', 'n', 'd', 'o', 'm'] }, …]; /* buffer : for some reason, the […]

节点为数组中的空值分配了多less内存

继续这个线程: 数组中的大量空值意味着什么危害? 我用node.js做了这个: arr=[] arr[1000]=1 arr[1000000000]=2 arr.sort() 我得到了 FATAL ERROR: JS Allocation failed – process out of memory 所以这就给我留下了问题(在Yahoogle上我找不到)为节点中的数组中的空条目实际分配了多less内存。 我不打算使用10亿条目,甚至没有closures,但也许还是不值得分配内存… 谁知道我可以检查?

从Node.js中的数组中分组类似的string

比方说,我有一个数组中的不同的URL的集合: var source = ['www.xyz.com/Product/1', 'www.xyz.com/Product/3', 'www.xyz.com/Category/1', 'somestring'] 迭代数组并将类似的string分组到一个单独的数组中是什么方法? 上面例子中的期望输出是: var output = [ ['www.xyz.com/Product/1', 'www.xyz.com/Product/3'], ['www.xyz.com/Category/1'], ['somestring'] ]; 条件 source内的所有项目都可以是随机string 逻辑必须能够在有意义的时间比较和分组大约100000个项目 我find了string相似性库 ,它可以将一个string与一个string集合进行比较。 一种方法是迭代源代码,将每个项目与源集合进行比较,并应用规则对具有相似分数的项目进行分组。 不过我想这样做效率太差。 有人可以build议我一个有效的方法来完成我所需要的?