npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

more-js

v0.8.8

Published

More functions to work with.

Downloads

15

Readme

more-js

More functions to work with.

Installation

npm install --save more-js

Usage

Currently there are two ways to use the functions:

1. As static functions (from v0.7)

Just require the respective type, and start using the static functions. For instance var Array = require('more-js/types/array'), would give you an Array namespace with all the functions. Then you can have expressions like firstVal = Array.first(arr).

  • First argument for all static function must be of the respective type, i.e All functions under Array would expect an array object as the first argument.
  • Currently, functions are available for Arrays, Objects & Strings. More types are in the pipeline.
  • Please note that requiring any file under more-js/types would return a namespace (Object of functions), and they are not extended from any of the native data types.

Sample:

var Array = require('more-js/types/array');
var Object = require('more-js/types/object');
var String = require('more-js/types/string');

Array.unique([1, 2, 2, 3]); // [1,2,3]
Object.typeOf([1, 2]); // array
String.fmt("{} text", "Sample"); // Sample text
String.fmt("Name: {lastName} {firstName}", {firstName:"Narendra", lastName: "Modi"}); // Name: Modi Narendra

2. As member function (Would be deprecated in v1)

You can have all these static members added as part the respective JavaScript data types. Just require more-js somewhere in your project, require('more-js');. Once required, all the functions will be available under the respective data types as member function. i.e, you would be able to do the following.

Considering performance and safety, option #1 is a better approach. Hence #2 would be deprecated soon.

[1, 3, 3, 4].unique().first(); // 1
"{} text".fmt("Sample"); // Sample text

Functions

Array

  • Array.first(array) - Returns the first element in the array
  • Array.last(array) - Returns the last element in the array
  • Array.validIndex(array, index) - Returns true if the index is in limit
  • Array.normalizeIndex(array, index) - Mainly to convert a negative index to a valid index from the right. Returns normalized index if index is valid, else undefined
  • Array.indexesOf(array, element) - Get indexes of all occurrences of an element
  • Array.swap(array, indexA, indexB) - Swaps values at indexes A & B, returns true if successful
  • Array.removeFrom(array, element, count) - Removes count number of value from the specified index. Count must be greater than 0 and defaults to 1. Returns the removed values.
  • Array.remove(array, element, count) - Remove instances of a specific element from the array
  • Array.insert(array, index, element1[...elementN]) - Inserts a set of elements at a position
  • Array.append(array, array) - Append an array to the end of current array
  • Array.filterPush(array, val1, [val2...valN]) - Pushes only non-null values into the array
  • Array.unique(array) - Returns a new array of all unique elements
  • Array.hashify(array, path) - Converts an array into a hash with value at the specified path as key
  • Array.findBy(array, path, value) - Find first element from the array with matching value at the specified path. The function uses === for comparison
  • Array.findAllBy(array, path, value) - Finds all element from the array with matching value at the specified path. Uses === for comparison

Object

  • Object.typeOf(object) - Returns correct type of object as a string. Fixes type for array, null, date, new Boolean, new Number, new String, RegExp, NaN & Infinity.
  • Object.isObject(object) - Returns true for non-null objects
  • Object.isPlainObject(object) - Returns true for a plain objects (non-null, not array, not dom element, not window, not any other basic types)
  • Object.isArray(object) - Returns true if object is an Array
  • Object.isString(object) -Returns true if object is a String
  • Object.isBoolean(object) - Returns true if object is a Boolean
  • Object.isNumber(object) - Returns true if object is a Number
  • Object.isFunction(object) - Returns true if object is a Function
  • Object.val(path) - Gets the value at the specified key path. Keys in the path must be dot separated
  • Object.keys() - Return all keys of current object
  • Object.values() - Return an array of all values in the object
  • Object.keyOf(value) - Given a value does a reverse look-up for a key
  • Object.keysOf(value) - Given a value does a reverse look-up for all matching keys
  • Object.forEach(callback) - Adds the missing forEach function to Objects
  • Object.merge(object, appendArray) - Recursively merges the given object to the current object
  • Object.equals(objectA, objectB) - Returns true if both objects have the same key-value pairs
  • Object.inject(object, properties) - Injects a set of non-enumerable properties into an object

String

  • String.format([val1, val2...Key Object]) - Replaces the patterns in current string with the given values. Pattern can be {} or {argumentIndex} or {keyName}. {} will be replaced in the order of given arguments. Optionally a hash of key value pairs can be passed as last argument.
  • String.fmt([val1, val2...Key Object]) - Just an alias for format
  • String.removeTags() - Removes HTML tags from current string

Running Tests

npm test

Release History

  • 0.1.0 Initial release
  • 0.2.0 Added string support
    • Added fmt(formatter) function to String.
    • Added filterPush function to Array.
    • Added val, values, keys & forEach functions to Object.
  • 0.3.0 More object functions
    • Added isObject, isPlainObject, isArray, isString, isBoolean, isNumber, isFunction, & merge functions to Object.
  • 0.4.0 More functions
    • Added array functions first, last, validIndex, normalizeIndex, indexesOf, swap, removeFrom, remove, insert, unique.
    • Added object functions typeOf, keyOf, keysOf.
    • Added string function format, both format and fmt are aliases.
  • 0.5.0
    • Array - hashify, findBy, findAllBy
  • 0.6.0
    • Object - equals, inject
    • String - removeTags
  • 0.7.0
    • Major performance changes - All the functions were moved into custom namespaces
    • Backward compatibility is maintained
  • 0.8.0
    • Added more.js, a namespace for all the types
    • Added browserify based build to convert more.js into a generic distributable form

Road-map

  • 0.9.0
    • Add Function type