
Security News
rv Is a New Rust-Powered Ruby Version Manager Inspired by Python's uv
Ruby maintainers from Bundler and rbenv teams are building rv to bring Python uv's speed and unified tooling approach to Ruby development.
Creates a callback that compares two objects by one or more keys.
Requires Node.js 8.3.0 or above.
npm i 3fn
The module exports a single function.
sortBy
(function, array, or any): A Map/object key. An array will be interpreted as a chain of nested keys. A function will be interpreted as a three-way comparison callback that accepts two arguments and returns a number. If the key is user-provided, you should wrap it in an array; otherwise you’ll have problems if the key is a function, array, or plain object.options
(plain object): An argument passed to the 3 and kget modules, allowing you to set their options. The most commonly-needed option is inObj
, which must be set to true
if sortBy
is a key which points to an inherited object property.A callback function that accepts a Map, Object, or other collection as its argument and returns -1
, 0
, or 1
. This callback then can be passed to the sort
function of an Array, for example.
const threeFn = require('3fn')
const personA = {name: 'John'}
const personB = {name: 'Andrew'}
const compare = threeFn('name')
compare(personA, personB) // 1
compare(personB, personA) // -1
[personA, personB].sort(compare) // [personB, personA]
const threeFn = require('3fn')
const _name = Symbol('name')
class Person {
constructor (name) {
this[_name] = name
}
get name () {
return this[_name]
}
}
const personA = new Person('John')
const personB = new Person('Andrew')
const compare = threeFn('name', {inObj: true})
compare(personA, personB) // 1
compare(personB, personA) // -1
[personA, personB].sort(compare) // [personB, personA]
const threeFn = require('3fn')
const personA = {name: 'John', age: 46}
const personB = {name: 'John', age: 27}
const compare = threeFn('name', 'age') // Sort by name first, and by age second
compare(personA, personB) // 1
compare(personB, personA) // -1
[personA, personB].sort(compare) // [personB, personA]
const threeFn = require('3fn')
const personA = {name: {first: 'John'}}
const personB = {name: {first: 'Andrew'}}
const compare = threeFn(['name', 'first'])
compare(personA, personB) // 1
compare(personB, personA) // -1
[personA, personB].sort(compare) // [personB, personA]
This module is based on 3, the three-way comparison module.
It is also part of the fn
family of modules:
FAQs
Creates a three-way comparison callback.
We found that 3fn 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.
Security News
Ruby maintainers from Bundler and rbenv teams are building rv to bring Python uv's speed and unified tooling approach to Ruby development.
Security News
Following last week’s supply chain attack, Nx published findings on the GitHub Actions exploit and moved npm publishing to Trusted Publishers.
Security News
AGENTS.md is a fast-growing open format giving AI coding agents a shared, predictable way to understand project setup, style, and workflows.