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' }]; |