js方法筛选出字符串数组和数组对象中name属性相同的对象,并整理成数组对象格式返回
时间: 2023-10-09 20:04:20 浏览: 110
JS判断两个数组或对象是否相同的方法示例
5星 · 资源好评率100%
可以使用 Array.filter() 方法筛选出数组对象中 name 属性相同的对象,然后再使用 Array.map() 方法整理成数组对象格式返回。
以下是示例代码:
```javascript
function filterByName(arr) {
// 筛选出字符串数组和数组对象中 name 属性相同的对象
const filteredArr = arr.filter((item) => {
if (typeof item === 'string') {
return false; // 排除字符串数组
} else {
const { name } = item;
return arr.some((item2) => {
return typeof item2 !== 'string' && item2.name === name;
});
}
});
// 整理成数组对象格式返回
const result = filteredArr.map((item) => {
if (typeof item === 'string') {
return { name: item }; // 字符串数组转换成对象
} else {
return item;
}
});
return result;
}
// 示例用法
const arr = ['foo', { name: 'bar' }, { name: 'baz' }, { name: 'bar' }];
const result = filterByName(arr);
console.log(result); // [{ name: 'bar' }, { name: 'baz' }, { name: 'bar' }]
```
在以上示例代码中,`filterByName()` 方法接受一个数组 `arr` 作为参数,并返回一个整理好的数组对象。首先使用 `Array.filter()` 方法筛选出数组中 name 属性相同的对象,然后使用 `Array.map()` 方法整理成数组对象格式返回。其中,对于字符串数组,将其转换成对象格式,仅包含 name 属性。
阅读全文