map方法

1.返回新数组

map和forEach都是遍历数组中的每一项,某种意义上告别了for循环。map与forEach支持三个参数,分别为item(数组中的每一项),index(每一项在数组中的索引),arr(数组本身),参数顺序不能错。map与forEach不同的是map遍历数组可以有返回值,如:
1.map遍历数组

遍历数据,将每一项除以2,并返回,这时候打印发现是一个新的数组,这个新数组由原数组元素对应的回调函数的返回值构成。若没有返回值,则新数组的所有元素为undefined。虽然返回一个新的数组,但是并不会覆盖原数组。
用同样的方法,用forEach试一遍:
2.forEach遍历数组
这时候打印就是undefined了,也就是说forEach只是数组中的每一项。

2.替换原数组

我们可以通过map返回一个新的数组的特性,替换原来数组,如:
3.利用map返回新数组

3.改变键值(key)

如果我们封装类似于下拉框的组件,根据不同配置调用不同的接口,组件中双向绑定的键值是不会变的,不然也达不到封装组件的意义了。那么获取人员列表的时候后端返回username,userId,获取部门列表的时候返回partname,partId,那么根据组件的要求,我们要将字段名称改成label与value。
如果说只需要用label与value的话,那么可以写成:

1
this.list = data.map(({id, name}) => ({label: name, value: id}))

先将map中的item进行解构,箭头函数若省略return的话加一个()。那么上边写的是你已经确定后端一定会返回id,name的时候,上边说的场景是后端接口返回的key是不确定的,所以我们需要写一个方法。

1
2
3
changeFieldName (name1, name2, arr) {
this.list= arr.map((item) => ({label: item[name1], value: item[name2]}))
}