lodash-Lang


常用:
.clone,.cloneDeep,
.eq,.isEqual,
.isArray,.isArrayLike, .isArrayLikeObject,.isObject, .isObjectLike,.isBoolean, .isString,.isDate, .isNumber,.isInteger,
_.isElement,

  • _.castArray(value)

如果 value 不是数组, 那么强制转为数组。
参数
value (*): 要处理的值。

返回
(Array): 返回转换后的数组。

_.castArray(1);
// => [1]
 
_.castArray({ 'a': 1 });
// => [{ 'a': 1 }]
 
_.castArray('abc');
// => ['abc']
 
 _.castArray(true);
// => [true]

_.castArray(null);
// => [null]
 
_.castArray(undefined);
// => [undefined]
 
_.castArray();
// => []
 
var array = [1, 2, 3];  // [1, 2, [3],{a:1,}]
console.log(_.castArray(array) === array);
// => true
// 如果是数组,那么原样返回,存储的地址都是一样的。
  • _.clone(value)

创建一个 value 的浅拷贝。
参数
value (*): 要拷贝的值

返回
(*): 返回拷贝后的值。

// js赋值
var objects = [{ 'a': 1 }, { 'b': 2 }];
var shallow= objects;

console.log(shallow===objects); // true,外层引用地址是一样的。
console.log(shallow[0] === objects[0]); // true,里面引用类型地址也是一样的。

objects[0].a=3; // 都会改变
// _.clone() 浅拷贝
var objects = [{ 'a': 1 }, { 'b': 2 }]; 
var shallow = _.clone(objects);

console.log(shallow===objects); // false,外层引用地址不一样。
console.log(shallow[0] === objects[0]); // true,里面引用类型地址是一样的。

objects[0].a=3; // 都会改变

// _.cloneDeep()  深拷贝
var objects = [{ 'a': 1 }, { 'b': 2 }];
var deep = _.cloneDeep(objects);

console.log(deep === objects); // false,外层断开了联系
console.log(deep[0] === objects[0]); // false,里面引用类型也断开了联系

deep [0].a=3; // 互不影响
  • _.cloneDeep(value)

这个方法类似 _.clone,除了它会递归拷贝 value。(也叫深拷贝)。
参数
value (*): 要深拷贝的值。

返回

(*): 返回拷贝后的值。

var objects = [{ 'a': 1 }, { 'b': 2 }];

var deep = _.cloneDeep(objects);

console.log(deep[0] === objects[0]);
// => false
  • _.isArray(value)

检查 value 是否是 Array 类对象。
参数
value (*): 要检查的值。

返回

(boolean): 如果value是一个数组返回 true,否则返回 false。

_.isArray([1, 2, 3]);
// => true
 
_.isArray(document.body.children);
// => false
 
_.isArray('abc');
// => false
 
_.isArray(_.noop);
// => false
  • _.isArrayLike(value)

参数
value (*): 要检查的值。

返回
(boolean): 如果value是一个类数组,那么返回 true,否则返回 false。

_.isArrayLike([1, 2, 3]);
// => true
 
_.isArrayLike(document.body.children);
// => true
 
_.isArrayLike('abc');
// => true
 
_.isArrayLike(_.noop);
// => false
  • _.isArrayLikeObject(value)

这个方法类似 _.isArrayLike。除了它还检查value是否是个对象。

参数
value (*): 要检查的值。

返回
(boolean): 如果 value 是一个类数组对象,那么返回 true,否则返回 false。

_.isArrayLikeObject([1, 2, 3]);
// => true
 
_.isArrayLikeObject(document.body.children);
// => true
 
_.isArrayLikeObject('abc');
// => false
 
_.isArrayLikeObject(_.noop);
// => false
  • _.isBoolean(value)

检查 value 是否是原始 boolean 类型或者对象。

_.isBoolean(false);
// => true
 
_.isBoolean(null);
// => false
  • _.isDate(value)

检查 value 是否是 Date 对象。
参数
value (*): 要检查的值。

返回
(boolean): 如果 value 是一个日期对象,那么返回 true,否则返回 false。

注:日期字符串不可以的;时间戳不可以的。

_.isDate(new Date); 
// => true

typeof new Date()  // object
 
_.isDate('Mon April 23 2012');
// => false
  • _.isElement(value)

检查 value 是否是可能是 DOM 元素。

_.isElement(document.body);
// => true
 
_.isElement('<body>');
// => false
  • _.isEmpty(value)

检查 value 是否为一个空对象,集合,映射或者set。 判断的依据是除非是有枚举属性的对象,length 大于 0 的 arguments object, array, string 或类jquery选择器

_.isEmpty(null);
// => true
 
_.isEmpty(true);
// => true
 
_.isEmpty(1);
// => true
 
_.isEmpty([1, 2, 3]);
// => false
 
_.isEmpty({ 'a': 1 });
// => false

_.isEmpty('abc')
 // false

空对象呢?是不是arrayLike都是fasle?

  • _.isEqual(value, other)

执行深比较来确定两者的值是否相等。

var object = { 'a': 1 };
var other = { 'a': 1 };
 
 _.eq(object, other) // false
 
_.isEqual(object, other);
// => true
 
object === other;
// => false
  • _.isInteger(value)

检查 value 是否为一个整数。

注意: 这个方法基于 Number.isInteger.

_.isInteger(3);
// => true
 
_.isInteger(Number.MIN_VALUE);
// => false
 
_.isInteger(Infinity);
// => false
 
_.isInteger('3');
// => false
  • _.isString(value)

检查 value 是否是原始字符串String或者对象。

_.isString('abc');
// => true
 
_.isString(1);
// => false

等等

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值