如何将A数组和B数组对象中的name相比较,A = B数组的name,就按照A数组的顺序将B数组重新排序
时间: 2024-03-26 09:39:52 浏览: 14
你可以使用JavaScript中的Array.sort()方法来实现这个功能。具体方法如下:
首先,我们可以使用Array.map()方法来创建一个新数组,其中每个元素都是A数组中每个对象的name属性。然后,我们可以使用Array.sort()方法将B数组按照A数组的name属性排序。
```javascript
// A数组和B数组
const A = [{ name: 'John' }, { name: 'Alice' }, { name: 'Bob' }];
const B = [{ name: 'Bob' }, { name: 'John' }, { name: 'Alice' }];
// 根据A数组的顺序重新排序B数组
B.sort((a, b) => {
return A.map(item => item.name).indexOf(a.name) - A.map(item => item.name).indexOf(b.name);
});
console.log(B); // [{ name: 'John' }, { name: 'Alice' }, { name: 'Bob' }]
```
以上代码将会输出`[{ name: 'John' }, { name: 'Alice' }, { name: 'Bob' }]`,这就是按照A数组的顺序重新排序后的B数组。
相关问题
js寻找数组对象中name为a的对象并返回
可以使用 JavaScript 的数组方法 `find` 来寻找数组对象中满足条件的元素,代码如下:
```javascript
const arr = [{ name: 'a', age: 18 }, { name: 'b', age: 20 }, { name: 'c', age: 22 }];
const result = arr.find(obj => obj.name === 'a');
console.log(result); // 输出 { name: 'a', age: 18 }
```
这里使用了箭头函数和对象的简写方式,可以更加简洁地书写。需要注意的是,`find` 方法在找到满足条件的元素后就会停止遍历,因此只会返回第一个符合条件的元素。如果需要找到所有符合条件的元素,可以使用 `filter` 方法。
JS中 要过滤返回 a数组中的b数组里字段seleted为true的对象
可以使用Array的filter方法和Object.keys方法来实现。
代码示例:
```javascript
const a = [{id: 1, name: 'obj1'}, {id: 2, name 'obj2'}];
const b = [{id: 1, selected: true}, {id: 2, selected: false}];
const filtered = a.filter(objA => {
const objB = b.find(obj => obj.id === objA.id);
return objB && objB.selected;
});
console.log(filtered); // [{id: 1, name: 'obj1'}]
```
解释:
1. 使用`filter`方法遍历`a`数组中的每个对象,返回符合条件的对象。
2. 在`filter`方法中使用`find`方法查找`b`数组中与当前`a`数组对象id相同的对象。
3. 判断找到的`objB`对象是否存在且`selected`属性为`true`,如果是,则返回当前`a`数组对象。