Tag: sorting

下划线组sorting

我有一个关于函数式编程的问题。 我使用underscore.js库。 让我们考虑一些用例。 我有一些重复标签的数组,我需要计算每个标签在数组中的出现次数,并根据出现次数进行sorting。 为了计算,我可以使用countBy多less个标签 _.countBy([1, 2, 3, 4, 5], function(num) { return num % 2 == 0 ? 'even': 'odd'; }); => {odd: 3, even: 2} 但在这里,因为我有一个散列,这对订单没有意义,所以没有sorting。 所以在这里,我需要将散列转换为数组然后对其进行sorting并将其转换为散列。 我很确定有这样一个优雅的方式,但我没有意识到这一点。 我将不胜感激任何帮助。

如果显式定义sorting顺序,则sorting非常慢

正如你可以检查下面的代码,通过在属性名称前加一个+或者-定义一个sorting顺序,结果是一个非常慢的sorting。 任何想法为什么? 默认sorting(值): 5.84ms Ascendingsorting(+值): 58.59ms 降序排列( – 值): 49.28ms value和+value之间存在差异(这两者都返回完全相同的sorting顺序)这一事实对我来说非常混乱。 let arr = [] for (let i = 0; i < 10000; ++i) { arr.push({ _id: 'doc' + i, value: Math.random(), k: i % 20 }) } function sort (…keys) { let data = {} data.sort = [] keys.forEach(key => { const newKey = […]

按键值recursionsortingJavaScript对象

通过其值也是对象的键sorting对象,并对该内部对象进行sorting,即recursionsorting对象。 sorting应该按键。 我看着Stackoverflow的其他问题,但没有一个是对象recursionsorting 。 我看了一下问题: 通过属性值对JavaScript对象进行sorting 例: input = { "Memo": { "itemAmount1": "5", "taxName1": "TAX", "productPrice1": "10", "accountName1": "Account Receivable (Debtors)" }, "Footer": { "productDescription2": "Maggie", "itemQuantity2": "49.5", "accountName2": "Account Receivable (Debtors)", "taxName2": "TAX" }, "Header": { "itemDiscount3": "10", "accountName3": "Account Receivable (Debtors)", "productPrice3": "10", "taxName3": "TAX" } } 产量 output = { "Footer": […]

如何在Mongoose中定义一个sorting函数

我正在开发一个使用Mongoose来访问我的MongoDB数据库的小型NodeJS Web应用程序。 我collections的简化模式如下: var MySchema = mongoose.Schema({ content: { type: String }, location: { lat: { type: Number }, lng: { type: Number }, }, modifierValue: { type: Number } }); 不幸的是,我无法以更方便的方式从服务器中检索检索到的数据。 我希望根据它们与给定位置( 位置 )之间的距离对结果进行sorting,但是还要考虑修饰符函数和修饰符值,该修饰符值也被视为input。 我打算做的是写在下面。 但是,这种sortingfunction似乎不存在。 MySchema.find({}) .sort( modifierFunction(location,this.location,this.modifierValue) ) .limit(20) // I only want the 20 "closest" documents .exec(callback) mondifierFunction返回Double。 到目前为止,我已经研究了使用mongoose的$ near函数的可能性,但这似乎没有sorting,不允许修饰符函数。 由于我对node.js和mongoose相当陌生,因此我可能会对自己的问题采取完全错误的方法,所以我打开完成对我的编程逻辑的重新devise。 […]

用string排列数组

我想sorting一个数组string中的数组。 这是类似于这个问题( sorting数组中的string数组 ),但我不知道如何实现。 我的数组如下 var myArray = [ ['blala', 'alfred', '…'], ['jfkdj', 'berta', '…'], ['vkvkv', 'zimmermann', '…'], ['cdefe', 'albert', '…'], ]; 我想按字母顺序(不区分大小写)按内部数组的名称或第二个参数进行sorting。 之后,我想sorting的第一个参数,如果有两个相同的第二个参数的元素。 我尝试使用以下,但不成功,并没有真正得到原因。 任何人都可以build议: function Comparator(a,b){ if (a[1] < b[1]) return -1; if (a[1] > b[1]) return 1; return 0; } var myArray = [ ['blala', 'alfred', '…'], ['jfkdj', 'berta', '…'], ['vkvkv', 'zimmermann', […]

为什么这个(部分)MergeSort实现吹的堆栈?

我正在经历制作自己的MergeSort实现的步骤。 它是recursion的,有一个基本的情况。 我没有做的唯一的事情就是长度为%2!= 0的数组不完美。所以你必须插入2 ^ n长度的数组。 我可以稍后解决。 但是,当我插入一个长度为4的数组时,我得到一个堆栈溢出。 为什么? 代码如下: function mergeSort(arr){ // step 0 – establish the variables let newArr = [], len = arr.length; // step 1 – divide the problem into smaller parts until no longer possible if(len <= 1){ return arr; } if (len === 2){ newArr = (arr[0] < arr[1]) […]

如何保持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.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

在mongodb中如何维护sorting的属性?

根据问题的答案,对象的属性顺序不能保证。 那么当我们将多个sorting字段作为对象传递时,MongoDB中的sorting函数如何完美地工作呢? db.users.find({}).sort({firstName: 1, age:-1}).exec(callback); mongodb如何知道它首先必须按姓氏sorting然后按年龄sorting? 它是在错误的假设上工作吗?

在mongoDB中使用虚拟字段sorting(mongoose)

比方说,我有一些像这样的虚拟领域的架构 var schema = new mongoose.Schema( { name: { type: String } }, { toObject: { virtuals: true }, toJSON: { virtuals: true } }); schema.virtual("name_length").get(function(){ return this.name.length; }); 在查询中可以通过虚拟字段对结果进行sorting? 就像是 schema.find().sort("name_length").limit(5).exec(function(docs){ … }); 当我尝试这个,结果很简单,没有sorting…