
1 <script>
2 // 访问和迭代数组--斐波那契数列的前20个数
3 /*
4 已知斐波那契数列中的前两项是 1,从第三项开始,每一项都等于前两项之和
5 */
6 // const fibonacci = [];
7 // fibonacci[1] = 1;
8 // fibonacci[2] = 1;
9 // for (let i = 3; i < 20; i++) {
10 // console.log(i);
11 // fibonacci[i] = fibonacci[i-1] + fibonacci[i-2]
12 // }
13 // console.log(fibonacci);
14 // for (let i = 1; i < fibonacci.length; i++) {
15 // // console.log(i);
16 // const element = fibonacci[i];
17 // console.log(element);
18 // }
19
20 /* 数组合并--concat 连接2个或更多数组,并返回结果 */
21 // const zero = 0;
22 // const positiveNumbers = [1,2,3]
23 // const negativeNumbers = [-3,-2,-1]
24 // let numbers = negativeNumbers.concat(zero, positiveNumbers)
25 // console.log('negativeNumbers',negativeNumbers); // 元素组不变
26 // console.log('numbers',numbers); //[-3, -2, -1, 0, 1, 2, 3]
27
28 /*
29 every方法迭代--
30 every 方法会迭代数组中的每个元素,直到返回 false。
31 对数组中的每个元素运行给定函数,如果该函数对每个元素都返回 true,则返回 true
32 */
33 // function isEvent(x) {
34 // console.log(x);
35 // return x%2 === 0 ? true : false;
36 // }
37 const isEven = x => x % 2 === 0;
38 // let numbers_every = [1, 2, 3, 4, 5, 6, 7, 8, 9]
39 // let test = numbers_every.every(isEven)
40 // console.log(test); // false
41
42 /* some方法迭代--
43 对数组中的每个元素运行给定函数,如果任一元素返回 true,则返回 true */
44
45 /*
46 forEach方法迭代
47 对数组中的每个元素运行给定函数。这个方法没有返回值
48 */
49 // let numbers_forEach = [1, 2, 3, 4, 5, 6, 7, 8, 9];
50 // numbers_forEach.forEach(x => console.log(x%2 === 0));
51
52 /*
53 两个会返回新数组的迭代方法
54 map
55 filter
56 */
57 let numbers_filter_map = [1, 2, 3, 4, 5, 6, 7, 8, 9];
58 const evenNunbers = numbers_filter_map.map(isEven);
59 // 它保存了传入 map 方法的 isEven函数的运行结果
60 console.log(evenNunbers); // [false, true, false, true, false, true, false, true, false]
61
62 const filterNumbers = numbers_filter_map.filter(isEven)
63 // 它返回的新数组由使函数返回 true 的元素组成
64 console.log(filterNumbers); // [2, 4, 6, 8]
65
66 /*
67 reduce--
68 reduce 方法接收一个有如下四个参数的函数:previousValue、
69 currentValue、index 和 array。因为 index 和 array 是可选的参数,所以如果用不到它们
70 的话,可以不传。这个函数会返回一个将被叠加到累加器的值,reduce 方法停止执行后会返回
71 这个累加器。如果要对一个数组中的所有元素求和,这就很有用。
72 */
73 let numbers_reduce = [1, 2, 3, 4, 5, 6, 7, 8, 9];
74 let resule = numbers_reduce.reduce((previous, current) => previous + current);
75 console.log(resule); // 45
76 </script>



<script>
/*
for ... of循环迭代
*/
let numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9];
// for (const n of numbers) {
// console.log(n % 2 === 0 ? 'event' : 'odd');
// }
/*
使用@iterator对象
*/
let iterator = numbers[Symbol.iterator]();
// console.log(iterator.next().value); // 1
// for (const n of iterator) {
// console.log(n);
// }
// 数组中的所有值都迭代完之后,iterator.next().value 会返回 undefined
// console.log(iterator.next().value); // undefined
/*
entries 方法返回包含键值对的@@iterator
keys 方法返回包含数组索引的@@iterator
values 方法返回的@@iterator 则包含数组的值
*/
// let aEntries = numbers.entries(); // 得到键值对的迭代器
// console.log(aEntries.next()); // {value: Array(2), done: false}
// console.log(aEntries.next().value); // [1, 2]
// for (const n of aEntries) {
// console.log(n);
// }
/*
from--
Array.from 方法根据已有的数组创建一个新数组。
*/
// let numbers2 = Array.from(numbers)
// console.log(numbers2); // [1, 2, 3, 4, 5, 6, 7, 8, 9]
// let evens = Array.from(numbers, x => (x%2 == 0))
// console.log(evens); // [false, true, false, true, false, true, false, true, false
/*
Array.of--
Array.of 方法根据传入的参数创建一个新数组
*/
// let numbers3 = Array.of(1,2,3)
// // 相当于
// let numbers4 = [1,2,3]
// // 用该方法复制已有的数组
// let numbersCopy = Array.of(...numbers3)
/*
fill--
fill 方法用静态值填充数组
*/
let numbersCopy = Array.of(1,2,3,4,5,6)
// 数组中从 1 开始的所有位置上的值都是 2
// numbersCopy.fill(2,1)
// console.log(numbersCopy); // [1, 2, 2, 2, 2, 2]
// 同样,我们也可以指定结束填充的索引
numbersCopy.fill(1,3,5); //我们会把 1 填充到数组索引 3 到 5 的位置(不包括5)
console.log(numbersCopy); // [1, 2, 3, 1, 1, 6]
/*
copyWithin--
copyWithin 方法复制数组中的一系列元素到同一数组指定的起始位置
*/
/*
-------------------排序元素------------------
*/
</script>


【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
2020-06-29 父组件监听本地vuex中的数据,然后传递给子组件,子组件也要监听才能变化
2019-06-29 块级元素 和行内元素的区别
2019-06-29 编写规范--Web前端开发修炼之道
2019-06-29 HTML标签的实例
2019-06-29 HTML标签的语义