扁平化多维数组
发表于|更新于|算法
|总字数:138|阅读时长:1分钟|浏览量:
将下面的多维数组打开,输出去重后的结果(扁平化数组)
1 | function fn(array, result = []) { |
使用递归实现。将需要转化的数组以及结果作为参数传进去。然后循环数组中的每一项,判断是不是一个数组,如果是,则调用fn,否则将这项push到result数组里面,并return出来。
文章作者: likepoems
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 如诗!
相关推荐
2025-07-06
JS 学习笔记(二)Ajax的简单使用
使用Ajax访问本地TXT文件ajax.js 12345678910111213// 创建请求对象var ajax = new XMLHttpRequest();// 建立连接ajax.open('get', 'test.txt');// 发送请求ajax.send()// 监听结果ajax.onreadystatechange = function () { // readyState 状态值 status 状态码 if (ajax.readyState == 4 && ajax.status == 200) { console.log("获取的数据是:" + ajax.responseText); }} test.txt 11234567890 运行结果:获取的数据是:1234567890
2025-07-06
JS 可编辑表格的实现
1、实现效果用户点击语文,数学,英语部分的单元格,可以实现分数的编辑,总分也会随之变化。先看下效果,如图: 2、设计思路 先通过HTML5+CSS3绘制表格,添加input的样式和err提示动画。 给要修改的数据的单元格添加name属性,给总分那一列的单元格添加rname属性。先获取所有要更改数据的单元格,通过for循环遍历,给他们添加单击事件。 定义一个addAnimate方法,表示单元格输入错误时的动画提示 定义setCellCilck方法,给单元格添加点击事件 定义一个updateCell()方法,里面传入一个ele参数。先要获取旧的数据并保存为oldhtml。然后创建一个input标签,并传入oldhtml。在input标签的聚焦事件中判断输入的input值是否合法,若不合法,则调用addAnimate()方法弹出error标签的错误提示信息,若合法,则直接赋给单元格当前输入的值。 定义一个updateScore方法,用来计算分数。通过class取出每行的分数的值,再取出总成绩的值。每个人总成绩等于每行分数相加。 3、实现源码table.html 1234...
2025-07-06
JS学习笔记 (四) 数组进阶
1、基本知识1、数组是值的有序集合。每个值叫做一个元素,而每个元素在数组中的位置称为索引,以数字表示,以0开始。2、数组是无类型的。数组元素可以是任意类型,并且同一个数组中的不同元素也可能有不同的类型。数组的元素可以是对象或其它数组。3、数组是动态的,数组长度可长可短。在创建数组时无须声明一个固定的大小或者在数组大小变化时无须重新分配空间4、数组可以是稀疏的。数组元素的索引不一定是连续的,它们之间可以有空缺,每个数组都有一个length属性,针对非稀疏数组,该属性就是数组元素的个数,针对稀疏数组,length比实际元素个数要大。5、JavaScript数组是JavaScript对象的特殊形式。数组索引可以认为是整数的属性名。6、数组继承自Array.prototype中的属性。它定义了许多的方法,它们对真正的数组和类数组对象都有效。如,字符串、arguments等。 2、操作数组2.1 创建数组2.1.1 字面量创建举个例子: 1234567891011let empty = [];let arr1 = [2, 3, 5, 7, 11];let arr2 = [1.1, true...
2025-07-06
js比较前后两个数组对象的差异
比较前后两个数组对象的差异 js比较前后两个数组对象的差异,比如是添加了什么数据或者删除了什么数据。 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758// 两个数组对象中有相同的键如 id// 其中, oldData为初始数据, newData为当前数据const getChangeData = (oldData, newData) => { let delData = oldData.filter( (item2) => !newData.some((item1) => item2?.id === item1?.id) ); let addData = newData.filter( (item2) => !oldData.some((item1) => item2?.id === item1?.id) ); let changeData = ...
2025-07-06
JavaScript实现右键菜单
1、代码实现123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182window.onload = function () { (function () ...
2025-07-06
栈的简单使用
栈1、基本含义栈遵循后进先出的规则(LCFO),元素从栈顶进入,先进入的元素会慢慢向栈底的方向移动,后进的元素会从栈顶出去。简单的示意图: 入栈顺序是从上到下,出栈刚好相反。 在JavaScript中,入栈可以看成数组尾部添加即push;出栈可以看成pop; 2、举个例子1234567891011121314151617181920212223242526272829class Stack { constructor() { this.arr = [] } add(ele) { this.arr.push(ele) } del() { return this.arr.pop() } clear() { return this.arr.length = 0 } isemply() { return this.arr.length === 0 }...
评论
公告
没有谁是一座孤岛,每本书都是一个世界
