JavaScript 数组操作
原文: https://gist.github.com/ljharb/58faf1cfcb4e6808f74aae4ef7944cff
forEach
callback
回答: 给你一个值, 随便你对它做什么, 我不管callback
参数:item
,index
,list
- 最终返回值: 啥也没有,
undefined
- 代码示例:
1 | ['zhang', 'zhen', 'qiang'].forEach((val, index, thisArg) => { |
map
:
- callback回答: here’s an item. what should i put in the new list in its place(翻译不好)?
- callback 有这些参数:
item
,index
,list
- 最终的返回值: 新项的列表
- 代码示例
1
2
3
4
5
6
7const objects = [{ id: 'a', name: 'chengyaojin' }, { id: 'b', name: 'zhangjunhui' }, { id: 'c', name: 'zhangzhenqiang' }];
const res = objects.map((item, index, list) => {
item['ctime'] = Date.now();
return item;
});
console.log(res);
filter
:
- callback是个谓词 - 应该返回真值或假值
- callback回答: 我应该保留这个值吗?
- callback有这些参数:
item
,index
,list
- 最终返回值: 保留下来的值
- 代码示例:
1 | const ints = [1, 2]; |
reduce
:
callback
回答(answers): 这是前一次迭代的返回结果,我应该继续下去吗?callback
的参数:result
,item
,index
,list
- 最后的返回结果:上一次的迭代结果
- 代码示例:
1 |
|
reduceRight
: 和reduce
相同,只不过遍历的方向是相反的方向
some
:
callback
是个谓词(predicate
) - 应该返回真值或假值callback
回答(answers
): 这个值满足需求吗?callback
的参数:item
,index
,list
- 最终返回值: 如果找到满足需求的值则返回
true
,否则返回false
注意
: 如果callback
返回true
则会停止迭代- 代码示例:
1 | const hasNegativeNumbers = [1, 2, 3, -1, 4].some((item, index) => { |
every
:
callback
是个谓词 - 返回真值(truthy)或假值(falsy)callback
回答(answers
): 这个值满足需求吗?callback
的参数:item
,index
,list
- 最终返回值: 如果找到满足需求的值则返回
true
,否则返回false
注意
: 如果callback
返回false
则会停止迭代- 代码示例:
1 | const allPositiveNumbers = [1, 2, 3, -1, 4].every((item, index) => { |
find
:
callback
是个谓词 - 返回真值(truthy)或假值(falsy)callback
回答:这是你要找的值吗?callback
的参数:item
,index
,list
- 最终返回值:如果能找到,则返回该项,否则返回
undefined
- 注意: 一旦
callback
函数返回真值,迭代就会停止 - 代码示例:
1 | const objects = [{ id: 'a', name: 'chengyaojin' }, { id: 'b', name: 'zhangjunhui' }, { id: 'c', name: 'zhangzhenqiang' }]; |
findIndex
:
callback
是个谓词 - 返回真值(truthy)或假值(falsy)callback
回答:这是你要找的值吗?callback
的参数:item
,index
,list
- 最终返回值:如果能找到,则返回该项的索引,否则返回
-1
- 注意: 一旦
callback
函数返回真值,迭代就会停止 - 代码示例:
1 | const objects = [{ id: 'a', name: 'chengyaojin' }, { id: 'b', name: 'zhangjunhui' }, { id: 'c', name: 'zhangzhenqiang' }]; |