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 .

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,033评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,725评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,473评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,846评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,848评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,691评论 1 282
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,053评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,700评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,856评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,676评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,787评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,430评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,034评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,990评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,218评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,174评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,526评论 2 343

推荐阅读更多精彩内容