arr=[{name:'北京',value:1}],arr1=[{name:'北京',value:0}],js 对比arr和arr1 去除name相同且value为0的对象
时间: 2024-04-30 13:24:41 浏览: 74
可以使用 Array.prototype.filter() 方法来实现:
```javascript
const arr = [{name:'北京',value:1}];
const arr1 = [{name:'北京',value:0}];
const result = arr.filter(item => {
const matchItem = arr1.find(i => i.name === item.name);
return !matchItem || (matchItem.value !== 0 && item.value !== 0);
});
console.log(result); // [{name:'北京',value:1}]
```
首先使用 filter() 方法对 arr 进行筛选,返回一个新数组,然后在回调函数中使用 find() 方法找到 arr1 中与当前元素 name 属性相同的对象,判断其 value 值是否为 0,若为 0 则不符合条件,否则符合条件。如果没有找到相同的元素,则直接返回当前元素。最终得到的结果就是去除了 name 相同且 value 为 0 的对象的数组。
相关问题
arr=[{name:'北京',value:1}],arr1=[{name:'北京',value:0}],js 对比arr和arr1 name相同则去除value为0的对象
你可以使用JavaScript的Array.filter()方法来过滤出符合条件的对象,然后返回一个新的数组,如下所示:
```javascript
let arr = [{name:'北京',value:1}];
let arr1 = [{name:'北京',value:0}];
let filteredArr = arr.filter(function(obj) {
// 使用Array.find()方法查找arr1中是否存在相同name的对象
let matchObj = arr1.find(function(item) {
return item.name === obj.name;
});
// 如果存在相同name的对象并且value为0,则过滤掉该对象
return !matchObj || obj.value !== 0;
});
console.log(filteredArr); // 输出: [{name:'北京',value:1}]
```
在上面的代码中,我们使用Array.filter()方法来过滤出符合条件的对象。在过滤函数中,我们使用Array.find()方法来查找arr1中是否存在相同name的对象。如果存在相同name的对象并且value为0,则过滤掉该对象。最后返回一个新的数组。
let arr=[{name:'a',value:1},{name:'b',value:2}] 求arr最大值
可以使用reduce()方法来得到arr数组中value最大的元素对象。
代码如下:
```
let arr=[{name:'a',value:1},{name:'b',value:2}];
let maxObj = arr.reduce((prev, current) => (prev.value > current.value) ? prev : current);
console.log(maxObj);
```
输出结果为:{name: "b", value: 2}
阅读全文