SOURCE


const a = [
    {
        value: '345',
        active: true
    },
    {
        value: '456',
        active: true
    },
    {
        value: '567',
        active: false
    },
    {
        value: 'hello',
        active: false
    }
];

console.log('第一次的a的值', a);

const b = _.filter(a, (item) => item.active);
const c = _.cloneDeep(b);


console.log('第一次的b的值', b);
b[0].active = false;
console.log('第一次的c的值', c);

/*  总结:lodash的filter函数实际上是引用了原始数组的指针地址,
    并不是真的重新构建了一个数组,
    所以改变过滤后得到的数组,会导致原始数组改变。
    解决办法:可以通过深拷贝(25行)避免这种问题!
    应用场景:多联动状态改变机制:从一组状态管理的中转站数组中,过滤出来状态是开着的,然后拿出来做了其他的处理,在处理的过程中,涉及到状态改变的,会直接同步到管理状态机制的中转站中!不需要我们再去更新中转站!
*/



const words = ['spray', 'limit', 'elite', 'exuberant', 'destruction', 'present'];

const result = words.filter(word => word.length > 6);

console.log(result);
// expected output: ["exuberant", "destruction", "present"]

result.pop();
console.log(result);
// expected output: ["exuberant", "destruction", "present"]

console.log(words);
// expected output: ['spray', 'limit', 'elite', 'exuberant', 'destruction', 'present']

/*  总结:js的filter函数真的重新构建了一个数组,
    所以改变过滤后得到的数组,不会导致原始数组改变。
    应用场景:过滤出新数组后,打算删除部分内容,但是不想要删除原始数组!
*/
console 命令行工具 X clear

                    
>
console