JavaScript中Array

一,针对于数组

const arr = ['a','b','c','d'];

Array.indexOf  将“返回第一次出现给定元素的索引”;

console.log(arr.indexOf('b')); // 1

Array.includes 只想知道数组是否包含某个值;布尔值

console.log(arr.includes('c')); // true

二,针对于数组对象

const objArr = [
  { id: 1, name: 'a' },
  { id: 2, name: 'b' },
  { id: 3, name: 'c' },
  { id: 4, name: 'd' },
  { id: 5, name: 'b' },
]
function getObj (name) {
  return objArr => objArr.name===name;
}

Array.filter  返回一个新的数组,过滤,它接受一个回调函数作为参数,基于一个包含所有元素的数组创建出一个新的数组。遍历整个数组;

console.log(objArr.filter(getObj('b')));
// [{ id: 2, name: 'b' },{ id: 5, name: 'b' }]

Array.find 返回一个元素值,只要找到第一个满足回调函数的元素,Array.find 就会停止,返回的是一个元素值,无需遍历整个数组;

console.log(objArr.find(getObj('b')));
// {id: 2, name: "b"}

Array.some 返回所需的布尔值。另外,从语义上看,Array.some 表示我们只想知道某个元素是否存在,而不需要得到这个元素。

console.log(objArr.some(getObj('b')));
// true

二,在数组对象中找到满足条件的对象,并对其累加新的属性值

方法一:最直接,最简单,用 Array.reduce 

// 回调函数
function callbackReduce (x,y) {
  return y.name === 'b'
  ? x.concat(Object.assign({},y,{age:11}))
  : x
}
// reduce(回调函数,空数组)
console.log(objArr.reduce(callbackReduce,[]))
// [{id: 2, name: "b", age: 11},{id: 5, name: "b", age: 11}]

方法二 :间接,需要Array.filter和Array.map一起用才能实现

console.log(
  objArr
    .filter(x => x.name === 'b')
    .map(x => Object.assign({},x,{color:'red'}))
)
// [{ id: 2, name: "b", color: "red" }, { id: 5, name: "b", color: "red" }]
原文地址:https://www.cnblogs.com/wang715100018066/p/10416955.html