New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

booleanjs

Package Overview
Dependencies
Maintainers
1
Versions
2
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

booleanjs

A boolean caculation tool for Object or Array. 对象或数组进行布尔运算的工具

  • 1.0.1
  • latest
  • Source
  • npm
  • Socket score

Version published
Weekly downloads
2
decreased by-50%
Maintainers
1
Weekly downloads
 
Created
Source

booleanjs

booleanjs是一个为Object和Array进行布尔运算(交/并/补)的轻量级工具库。

使用说明

目前兼容commonjs AMD 以及普通的加载方式

commonjs/AMD

使用npm进行安装

npm install booleanjs
var bool = require('booleanjs');

普通加载

使用script标签引入

<script src="path/to/booleanjs/dist/boolean.min.js"></script>
var bool = window.bool;

API

下面是bool的方法列表:

  • same
  • merge
  • exclude
  • isEqual
  • isContain

same

{Object|Array} same({Object|Array}obj, ...{Object|Array|null}objs)

返回多个Object或多个Array的交集

注: 第一个参数必须是{Object}或者是{Array},否则会报错

当第一个参数为{Object}时,objs可传入的值为:

  • {Array} 要保留的属性keys数组,如:['a', 'b', 'c'],会将不在该数组里的属性移除;
  • {Object} 普通对象,只有属性name和value都分别相等时,该属性才会保留下来;
  • {null|undefined} 空参数,直接将该参数忽略
Example
// a = {b: 2};
var a = bool.same(
    {a: 1, b: 2, c: 3},
    {a: 1, b: 2},
    {b: 2, c: 4}
);

// a = {b: 2};
var a = bool.same(
    {a: 1, b: 2, c: 3},
    ['b', 'c'],
    {a: 1, b: 2}
);

当第一个参数为{Array}时,objs可传入的值为:

  • {Array} 普通数组,则返回与该数组拥有共同元素的数组,元素顺序与obj中的顺序保持一致;
  • {null|undefined} 空参数,直接将该参数忽略
Example
// a = ['1', 2];
var a = bool.same(
    ['1', 2, '3'],
    [2, 4, '1']
);

// a = [];
var a = bool.same(
    ['1', 2, '3'],
    [2, '1'],
    [1]
);

merge

{Object|Array} merge({Object|Array}obj, ...{Object|Array|null}objs)

返回多个Object或多个Array的并集

当第一个参数为{Object}时,效果跟Object.assign类似,区别在于,当属性的value为{Object}或{Array}时,不会对该属性做拷贝。

objs能传入的值为:

  • {Object} 普通对象
  • {null|undefined} 忽略该参数
Example
var a = {b: 1};
var x = {d: 1, e: a};

// c = {d: 2, e: {b: 1}, f: 3}
// c === x
var c = bool.merge(
    x,
    {d: 2},
    {f: 3}
);

// c = {d: 2, e: {b: 2}, f: 3}
a.b = 2;

当第一个参数为{Array}时,objs可传入的值为:

  • {Array} 普通数组,会首先将该数组中与obj重复的的元素过滤,再将剩余的元素append到obj中,同时返回obj数组;
  • {null|undefined} 忽略该参数
Example
var a = [1, 2, 3, 4];

// b = [1, 2, 3, 4, 7, 6]
// a === b
var b = bool.merge(
    a,
    [7, 4, 1],
    [2, 6]
);

exclude

{Object|Array} exclude({Object|Array}obj, ...{Object|Array}objs)

返回obj与objs的补集

当第一个参数为{Object}时,objs可传入的值为:

  • {Array} 要保留的属性keys数组,如:['a', 'b', 'c'],会将在该数组里的属性移除;
  • {Object} 普通对象,只有属性name和value都分别相等时,该属性才会被移除;
  • {null|undefined} 空参数,直接将该参数忽略
Example
// a = {d: 4}
var a = bool.exclude(
    {a: 1, b: 3, c:3, d: 4},
    {c: 4, d: 4},
    ['a', 'b']
);

当第一个参数为{Array}时,objs可传入的值为:

  • {Array} 普通数组,则排除与该数组拥有共同元素的数组,元素顺序与obj中的顺序保持一致;
  • {null|undefined} 空参数,直接将该参数忽略
Example
// a = [2]
var a = bool.exclude(
    [1, 2, 3, 4],
    [3, 1, 7],
    [1, 4, 6]
);

isEqual

{boolean} isEqual({*}obj1, {*}obj2)

判断两个对象是否深度相等,应该跟underscore实现的差不多

** 注 ** 能判断的类型有

  • string
  • number
  • null
  • undefined
  • Array
  • Object
  • Date
  • RegExp
Example
// true
var a = bool.isEqual({}, {});

// false
var a = bool.isEqual(-0, +0);

// true
var a = bool.isEqual(NaN, NaN);

isContain

{boolean} isContain({*}obj1, {*}obj2)

判断obj1是否包含obj2

// true
var a = bool.isContain({}, null);

// true
var a = bool.isContain({a: 1, b: {c: 2}}, {b: {c: 2}});

// true
var a = bool.isContain([1, 2, 3, 4], [4, 3]);

Keywords

FAQs

Package last updated on 04 Nov 2016

Did you know?

Socket

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.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc