array-2

突然发现这个下面每一个例子都很有意思,所以这个要在重新看一遍https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/Reduce

reduce

1 .arr.reduce(callback,[initialValue])
2 .callback(a,b,c,d)

a.累加器累计回调的返回值,是上一次调用的返回值,或者是initialValue
b.数组中正在处理的元素
c.正在处理当前元素的索引,如果提供了initialValue,则起始索引号为0,否则为1.
d.调用reduce的数组

3 .initialValue:作为第一次调用callback函数时的第一个参数的值。如果没有提供初始值,则将使用数组中的第一个元素
4 .合并数组,将数组转为1维数组

let arr=[[0, 1], [2, 3], [4, 5]]
c(arr.reduce((a,b)=>{
    return [...a,...b]
}))

5 .计算元素中每个元素出现的次数

let x=fruits.reduce((a,b)=>{
    if(b in a){
       a[b]++; 
    }else{
        a[b]=1;
    }
    return a;
},{})

6 .数组里面所有值的和

let arr=[1,2,,3,4,5]
c(arr.reduce((a,b)=>{
    return a+b
},100))
//设置了100作为初始值

7 .按照属性对object分类

let obj=[
    { name: 'Alice', age: 21 },
    { name: 'Max', age: 20 },
    { name: 'Jane', age: 20 }
]
function groupBy(objectArray,property){
    return objectArray.reduce((acc,obj)=>{
        let key =obj[property]

        if(!acc[key]){
            acc[key]=[]
        }
        acc[key].push(obj)
        return acc;
    },{})
}

8 .数组去重:有更简单的方法
9 .合并数组对象内的某一个数组的值
10 .按照顺序执行promise函数

1 .这个其实可以就做成节流函数,必须要等另一个promise返回true的时候才执行下一个

every(fn):数组里面的每个元素都符合这个条件,否则返回false

function t(x){
  return x.indexOf('a') !=-1
}
c(fruits.every(t))

filter()过滤返回符合条件的数据

var arr = [
  { id: 15 },
  { id: -1 },
  { id: 0 },
  { id: 3 },
  { id: 12.2 },
  { },
  { id: null },
  { id: NaN },
  { id: 'undefined' }
];
function t(x){
  return x.indexOf('a') !=-1
}
c(fruits.filter(t))
function isNumber(obj){
    return obj!=undefined && typeof(obj)==='number'&&!isNaN(obj)
}
function filterById(item){
  return isNumber(item.id)&& item.id!==0
}
c(arr.filter(filterById))

find():查找数组里面是否有这一项

1 .includes好像是无法找到数组里面的对象的吧 ,关键的是includes不能传入函数
2 .关键是这个找到,只要找到,就可以做很多的操作了,比如删除,改变,增加

var inventory = [
  {name: 'apples', quantity: 2},
  {name: 'bananas', quantity: 0},
  {name: 'cherries', quantity: 5}
];

if(inventory.includes('apples')){
  c('ok')
}

let f=(item)=>{
  return function(value){
      return value.name===item
  }
}
c(inventory.find(f('cherries')))

forEach():对数组中每个元素执行一次提供的函数

1 .如果整个数组在执行的时候数组被修改,那么执行的是改变之后的数组
2 .发生改变的地方可能会被跳过

var words = ["one", "two", "three", "four"];
words.forEach(function(word) {
  console.log(word);
  if (word === "two") {
    words.shift();
  }
});

indexOf():

1 .字符串和数组里面都有这个方法
2 .

join():把数组内的元素按照某种形式连接起来

1 .连接类数组对象

function f(a, b, c) {
  var s = Array.prototype.join.call(arguments);
  console.log(s); // '1,a,true'
}
f(1, 'a', true);

map():创建一个新数组,其结果是该数组中的每隔元素都调用一个提供函数后返回的结果

1 .求数组中每个元素的平方和
2 .使用map重新格式化数组中的对象
3 .

reverse()

1 .颠倒数组中的元素
2

slice(x,y):返回一个新的数组对象。这个对象是一个由x,y决定的原数组的浅拷贝,原数组不会被改变

1 .类似于python的切割字符串
2 .

split(start,deletecount,items):通过删除现有元素或添加新元素来修改数组,并以数组返回原数组中被修改的内容

1 .start:指定修改的开始位置,如果超出了数组的长度,则从数组末尾开始添加内容,如果是负值,则表示从数组末位开始的第几位
2 .deleteCount:表示要移除的数组元素的个数,如果是0或者负数,则不移除元素,这种情况下,至少应该添加一个新元素。使用这个参数老控制是删除还是填加元素
3 .items:要添加数组的元素从start位置开始,如果不指定,则splice将直删除数组元素。
4 .

toLocalString('en',{timeZone:'UTC'}):把一个数组里面的所有东西转换为一个整体的字符串

1 .a2.split(','),其实我想要的结果是让他们里面的每一项都各自转为字符串形式,然后进行操作
2 .

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容