Array对象方法(七) map/reduce/reduceRight

134 阅读1分钟

javaScript Array数组对象map/reduce/reduceRight

map:将对应数组的每个内容做特定的处理,处理内容为传入函数的处理逻辑

let arr = [5, 6, 7, 8, 1, 2, 3];
let result = arr.map(item => {
  return item * 2;
});
console.log(result); //[ 10, 12, 14, 16, 2, 4, 6 ]

let arr1 = [
  {
    name: 'zg',
    age: 18
  },
  {
    name: 'kobe',
    age: 35
  },
  {
    name: 'lucy',
    age: 22
  },
];
result = arr1.map(item => {
  return {
    name: item.name + " haha",
    age: item.age + 100
  };
});
console.log(result);
/**结果
[
  {name: 'zg haha', age: 118},
  {name: 'kobe haha', age: 135},
  {name: 'lucy haha', age: 122},
]
 */

reduce:将数组累计依次处理,通常用于累加,传入的函数中,会带上前面一个返回值以及本次的值

let arr = [5, 6, 7, 8, 1, 2, 3];
let result = arr.reduce((preValue, currentValue) => {
  return preValue + currentValue;
});
console.log(result); //32

result = arr.reduce((preValue, currentValue) => {
  return preValue - currentValue;
});
console.log(result); //-22

let arr1 = [
  {
    name: 'zg',
    age: 18
  },
  {
    name: 'kobe',
    age: 35
  },
  {
    name: 'lucy',
    age: 22
  },
];
result = arr1.reduce((preValue, currentValue) => {
  return {
    name: preValue.name + currentValue.name,
    age: preValue.age + currentValue.age
  };
});
console.log(result); // {name: 'zgkobelucy', age: 75}

reduceRight:从数组尾部开始向前依次累计,与reduce的方向相反

let arr = [5, 6, 7, 8, 1, 2, 3];
let result = arr.reduce((preValue, currentValue) => {
  return preValue + currentValue;
});
console.log(result); //32

result = arr.reduce((preValue, currentValue) => {
  return preValue - currentValue;
});
console.log(result); //-26

let arr1 = [
  {
    name: 'zg',
    age: 18
  },
  {
    name: 'kobe',
    age: 35
  },
  {
    name: 'lucy',
    age: 22
  },
];
result = arr1.reduce((preValue, currentValue) => {
  return {
    name: preValue.name + currentValue.name,
    age: preValue.age + currentValue.age
  };
});
console.log(result); // {name: 'lucykobezg', age: 75}