map(item => { return item.id }).filter(item => { return item })是什么操作?
时间: 2024-02-10 17:34:12 浏览: 23
这是一个 JavaScript 中的数组操作,它使用了 map 和 filter 两个函数。这个操作的作用是从一个包含多个对象的数组中提取每个对象的 id 属性,并返回一个只包含非空 id 的新数组。具体来说,map 函数对数组中的每个元素都执行一次回调函数,将回调函数的返回值组成一个新的数组。而 filter 函数则过滤掉数组中不满足条件的元素。在这个操作中,map 函数返回了每个对象的 id 属性,filter 函数则过滤掉那些 id 为空的元素,最终得到的是一个只包含非空 id 的新数组。
相关问题
帮我优化一下 下面的代码 _list.forEach(item=>{ item.child.forEach(i=>{ i.forEach(k=>{ if (k.id === id) { dropData = k } }) }) }) _list.forEach(item => { item.child.forEach(val=>{ val.forEach(k=>{ if (k.timetableInputId === dropData.timetableInputId && k.sequence === dropData.sequence && k.week === dropData.week && +k.classPeriodType === 4 ) { k.classId = item.id dropDataPackage.push(k) } }) }) })
可以将上述代码进行优化,通过使用 Array 的内置方法,例如 `find` 和 `filter` 等,可以提高代码的可读性和执行效率。下面是一个可能的优化版本:
```
const dropData = _list.flatMap(item => item.child.flat().find(i => i.some(k => k.id === id)))
if (dropData) {
const dropDataPackage = _list.flatMap(item => item.child.flat().filter(val => val.some(k => k.timetableInputId === dropData.timetableInputId && k.sequence === dropData.sequence && k.week === dropData.week && +k.classPeriodType === 4)).map(k => { k.classId = item.id; return k }))
}
```
优化后的代码使用了 `flatMap` 和 `find` 方法来查找匹配的 `dropData` 对象,使用 `flatMap` 和 `filter` 方法来查找匹配的 `dropDataPackage` 数组,并使用 `map` 方法将 `classId` 添加到匹配的对象中。
如何得到newArr数组中的companyName并根据数组显示 let groups = [...new Set(company2.map(item => item.parentCode))]; let newArr = groups.map(parentCode =>{ return company2.filter(item => item.parentCode == parentCode); }) this.child = newArr; console.log(this.child)
可以使用数组的 map 方法遍历 newArr 数组,然后在每个子数组中使用 map 方法获取 companyName,最后将其显示出来。可以参考下面的代码示例:
```
let groups = [...new Set(company2.map(item => item.parentCode))];
let newArr = groups.map(parentCode =>{
return company2.filter(item => item.parentCode == parentCode);
});
this.child = newArr;
console.log(this.child);
// 获取 companyName 并显示
this.child.map(group => {
group.map(item => {
console.log(item.companyName);
});
});
```
在上面的代码中,我们首先使用 Set 和 map 方法获取了按 parentCode 分组后的子数组 newArr,然后将其赋值给 this.child,并在控制台中输出了 this.child 的值。
接下来,我们使用 map 方法遍历 this.child,然后使用 map 方法遍历每个子数组 group,最后获取其中的 companyName 并显示出来。