js数组中对象的替换,替换原数组& lodash中一些常用的方法(很实用)

代码

let myArray = [
  {name: 'John', age: 25},
  {name: 'Alice', age: 30},
  {name: 'Bob', age: 35}
];

// 要替换的对象
let objToReplace = {name: 'Alice', age: 30};

// 替换为的对象
let replacementObj = {name: 'Alex', age: 28};

// 使用forEach方法
myArray.forEach((obj, index) => {
  // 如果当前对象与要替换的对象相同,则替换为新对象
  // if(_.isEqual(obj,objToReplace))
  if (obj.name === objToReplace.name && obj.age === objToReplace.age) {
    myArray[index] = replacementObj;
  }
});

console.log(myArray);
// Output: [
//   {name: 'John', age: 25},
//   {name: 'Alex', age: 28},
//   {name: 'Bob', age: 35}
// ]

比较两对象是否相等,也可以用lodash的isEqual(obj1,obj2)

_.isEqual(value, other)

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

这个方法支持比较 arrays, array buffers, booleans, date objects, error objects, maps, numbers, Object objects, regexes, sets, strings, symbols, 以及 typed arrays. Object 对象值比较自身的属性,不包括继承的和可枚举的属性。 不支持函数和DOM节点比较。

lodash中一些常用的方法(很实用):

1. _.get(object, path)

通过键名取对象的键值。

const object = {
  'a': [
    {
      'b': {
        'c': 3
      }
    }
  ]
};
 
const value = _.get(object, 'a[0].b.c');
console.log(value);
// output: 3

2. _.isEmpty(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

3. _.isNil(value)

检查值是否是 null 或者 undefined

4. _.cloneDeep(value)

想对某个数组或对象的值进行修改,但是又要保留原来的值不被修改,此时就可以用深拷贝来创建一个新的数组或对象,从而达到操作(修改)新的数组 或 对象时,保留原来数组 或 对象。
之前遇到的问题:编辑表单时,表格数据也会跟着变化
原因:传过去的数据是一个对象,浅拷贝拷贝的是引用
在这里插入图片描述

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值