Research
Security News
Quasar RAT Disguised as an npm Package for Detecting Vulnerabilities in Ethereum Smart Contracts
Socket researchers uncover a malicious npm package posing as a tool for detecting vulnerabilities in Etherium smart contracts.
natural-compare-lite
Advanced tools
Compare strings containing a mix of letters and numbers in the way a human being would in sort order.
The natural-compare-lite npm package is designed for comparing strings in a way that humans might naturally order them. This is particularly useful when sorting lists of strings that include numbers, as it ensures that numerical parts are compared numerically rather than lexicographically. For example, 'item2' will come before 'item10', which is not the case with standard string comparison.
Natural String Comparison
This feature allows for the natural comparison of strings, especially useful for sorting arrays where elements contain numbers. The provided code demonstrates sorting an array of strings in a natural order.
"use strict";\nconst naturalCompare = require('natural-compare-lite');\nconsole.log(['item10', 'item2'].sort(naturalCompare)); // ['item2', 'item10']
This package offers functionality similar to natural-compare-lite, providing natural string comparison capabilities. It differs in implementation details and possibly in performance characteristics, but serves a similar purpose of comparing strings in a human-friendly way.
Alphanum-sort is another package that provides natural string sorting capabilities. It allows for additional customization options such as case sensitivity and whether to treat whitespace and punctuation as part of the sorting criteria. This makes it a versatile alternative to natural-compare-lite, depending on the specific needs of a project.
@version 1.4.0
@date 2015-10-26
@stability 3 - Stable
Compare strings containing a mix of letters and numbers in the way a human being would in sort order. This is described as a "natural ordering".
Standard sorting: Natural order sorting:
img1.png img1.png
img10.png img2.png
img12.png img10.png
img2.png img12.png
String.naturalCompare returns a number indicating whether a reference string comes before or after or is the same as the given string in sort order. Use it with builtin sort() function.
<script src=min.natural-compare.js></script>
npm install natural-compare-lite
require("natural-compare-lite")
// Simple case sensitive example
var a = ["z1.doc", "z10.doc", "z17.doc", "z2.doc", "z23.doc", "z3.doc"];
a.sort(String.naturalCompare);
// ["z1.doc", "z2.doc", "z3.doc", "z10.doc", "z17.doc", "z23.doc"]
// Use wrapper function for case insensitivity
a.sort(function(a, b){
return String.naturalCompare(a.toLowerCase(), b.toLowerCase());
})
// In most cases we want to sort an array of objects
var a = [ {"street":"350 5th Ave", "room":"A-1021"}
, {"street":"350 5th Ave", "room":"A-21046-b"} ];
// sort by street, then by room
a.sort(function(a, b){
return String.naturalCompare(a.street, b.street) || String.naturalCompare(a.room, b.room);
})
// When text transformation is needed (eg toLowerCase()),
// it is best for performance to keep
// transformed key in that object.
// There are no need to do text transformation
// on each comparision when sorting.
var a = [ {"make":"Audi", "model":"A6"}
, {"make":"Kia", "model":"Rio"} ];
// sort by make, then by model
a.map(function(car){
car.sort_key = (car.make + " " + car.model).toLowerCase();
})
a.sort(function(a, b){
return String.naturalCompare(a.sort_key, b.sort_key);
})
It is possible to configure a custom alphabet to achieve a desired order.
// Estonian alphabet
String.alphabet = "ABDEFGHIJKLMNOPRSŠZŽTUVÕÄÖÜXYabdefghijklmnoprsšzžtuvõäöüxy"
["t", "z", "x", "õ"].sort(String.naturalCompare)
// ["z", "t", "õ", "x"]
// Russian alphabet
String.alphabet = "АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдеёжзийклмнопрстуфхцчшщъыьэюя"
["Ё", "А", "Б"].sort(String.naturalCompare)
// ["А", "Б", "Ё"]
Copyright (c) 2012-2015 Lauri Rooden <lauri@rooden.ee>
The MIT License
FAQs
Compare strings containing a mix of letters and numbers in the way a human being would in sort order.
The npm package natural-compare-lite receives a total of 8,273,404 weekly downloads. As such, natural-compare-lite popularity was classified as popular.
We found that natural-compare-lite demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Research
Security News
Socket researchers uncover a malicious npm package posing as a tool for detecting vulnerabilities in Etherium smart contracts.
Security News
Research
A supply chain attack on Rspack's npm packages injected cryptomining malware, potentially impacting thousands of developers.
Research
Security News
Socket researchers discovered a malware campaign on npm delivering the Skuld infostealer via typosquatted packages, exposing sensitive data.