近期写代码的时候,遇到了数组与数组以及数组与对象之间的操作的一些问题,因为毕业不久,就js了解的也不全面透彻,后来感觉使用for循环实现的形式实在是太Low了,也不是说low,嗯…感觉代码的B格有点低,所以自己也是百度了一下,搜到了一些js中已经封装好了的方法,这篇文章以后会持续的更新,遇到什么补什么吧以后,鬼知道我以后想写点什么东西。
嗯…XXX=>{}是ES6中的写法,置换成function(){}即可
例如:
_array.foreach(function(item){
})
置换为
_array.foreach(item=>{
})
具体区别有兴趣的可以自行百度,这里不过多描述。
- 数组与数组之间的操作:
从对象数组中删除另一个对象数组中的具有某个指定相同属性值的对象
数据信息:
_array:对象数组
_param:另一个数组对象
_param.forEach(item => {
_array.splice(_array.findIndex(v => v.name == item.name), 1)
})
- 数组与对象之间的操作:
从对象数组中删除含有某个属性值的对象
数据信息:
对象数组:_array
对象:_obj
_array = _array.filter((item)=>item.name != _obj.name)
- 对象方法的一些封装
// 清空对象而又不改变结构
export function resetTemp(temp) {
for(let prop in temp){
if(Array.isArray(temp[prop])){
temp[prop] = []
}else{
temp[prop] = null;
}
}
return temp;
}
//深拷贝
export function deepCopy(_obj) {
return JSON.parse(JSON.stringify(_obj))
}
//深度比对两个对象是否相等
export function difference(object, base) {
function changes(object, base) {
return _.transform(object, function(result, value, key) {
if (!_.isEqual(value, base[key])) {
result[key] = (_.isObject(value) && _.isObject(base[key])) ? changes(value, base[key]) : value;
}
});
}
return changes(object, base);
}
先总结到这,等忙完这段时间,会开始系统学习js,后续发现有好的方法会持续更新,共勉