1. 嵌套数组打平并且去重

    var arr = [,,,,,,,,[,,,,[,,]]];
var obj = {};//去重标识
function test(data) {
var newArr = [];
for ( var i in data) {
if (data[i] instanceof Array) {
return [].concat(newArr,test(data[i]));
}else{
if(!obj[data[i]]) {
obj[data[i]] = true;
newArr.push(data[i]);
}
}
}
return newArr;
}
var data = test(arr);
console.log(data)//[3, 2, 4, 5, 6, 1, 9, 10]

2.冒泡排序, 冒泡排序算法就是依次比较大小,小的大的进行位置上的交换

    var arr = [,,,,,,];

    for (var i in arr) {
for (var j in arr) {
if (arr[i] > arr[j]){
var num = arr[i];
arr[i] = arr[j];
arr[j] = num;
}
}
}
console.log(arr);//[30, 20, 10, 9, 7, 5, 1]

3.快速排序,算法参考某个元素值,将小于它的值,放到左数组中,大于它的值的元素就放到右数组中,然后递归进行上一次左右数组的操作,返回合并的数组就是已经排好顺序的数组了。

    var arr = [,,,,,,];
function fun(data) {
var len = data.length;
if (len <= ) {
return data;
}
var num = data[];//参考元素
var left = [];
var right = [];
for( var i = ; i < len; i++) {
if (data[i] < num ) {
left.push(data[i]);
}else{
right.push(data[i]);
}
}
return [].concat(fun(left), [num], fun(right));
}
console.log(fun(arr)); //[1, 5, 7, 9, 10, 20, 30]

4. 树形结构数据,根据子级数据的 某个字段,来获取所有的父级

例如:antd 的 联级选择插件,回显数据,需要从上到下的每一级数据的id, 然后存数据库的,可能只有一个id, 不是一个数组,这个时候我们需要拿到这个id, 倒推所有父级的id

getInitMenuActive = (id) => {
const { list } = this.props;
function fn(data, val) {
for (let i = ; i < data.length; i++) {
if (data[i] && data[i].id === val) {
return [data[i].id];
} else
if (data[i] && data[i].children && data[i].children.length > ) {
let ids = fn(data[i].children, val);
if (ids) {
return ids.concat(data[i].id);
}
}
}
}
let list = fn(list, id);
return list ? list : [];
}

js 简单算法的更多相关文章

  1. JS简单实现:根据奖品权重计算中奖概率实现抽奖的方法

    本文主要介绍:使用 JS 根据奖品权重计算中奖概率实现抽奖的方法. 一.示例场景 1.1.设置抽奖活动的奖项名称 奖项名称:["一等奖", "二等奖", &qu ...

  2. 总结下js排序算法和乱序算法

    其实本人最怕的就是算法,大学算法课就感觉老师在讲天书,而且对于前端来说,算法在实际的应用中实在是很有限.毕竟算法要依靠大量的数据为基础才能发挥出算法的效率,就浏览器那性能,......是吧,退一万步说 ...

  3. js简单 图片版时钟,带翻转效果

    js简单 图片版时钟,带翻转效果 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"& ...

  4. js简单操作Cookie

    贴一段js简单操作Cookie的代码: //获取指定名称的cookie的值 function getCookie(objName) { var arrStr = document.cookie.spl ...

  5. js简单弹出层、遮罩层

    <html> <head> <title>js简单弹出层</title> <style> /*阴影边框效果*/ .box-shadow-1 ...

  6. Tourist.js – 简单灵活的操作指南和导航插件

    Tourist.js 是一个基于 Backbone 和 jQuery 开发的轻量库,帮助你在应用程序创建简单易用的操作指南和导航功能.相比网站,它更适合用于复杂的,单页网站类型的应用程序.Touris ...

  7. js简单显示和隐藏div,触发超链接,动态更改button值,setInterval()简单使用,jquery easyui弹出框简单使用 .

    js简单显示和隐藏div .<!DOCTYPE html> .<html> .<head> .<meta charset="UTF-8"& ...

  8. Gulp.js - 简单、直观的自动化项目构建工具

    Gulp.js 是一个简单.直观的构建系统.崇尚代码优于配置,使复杂的任务更好管理.通过结合 NodeJS 的数据流的能力,你能够快速构建.通过简单的 API 接口,只需几步就能搭建起自己的自动化项目 ...

  9. Node.js简单介绍并实现一个简单的Web MVC框架

    编号:1018时间:2016年6月13日16:06:41功能:Node.js简单介绍并实现一个简单的Web MVC框架URL :https://cnodejs.org/topic/4f16442cca ...

随机推荐

  1. PyQt—QTableWidget中的checkBox状态判断

    一.QTableWidget实现checkBox效果 利用QTableWidgetItem对象的CheckState属性,既能显示QCheckBox,又能读取状态 table = QtGui.QTab ...

  2. Windows进程单实例运行

    场景         Windows进程单实例运行,如果有进程没有退出,继续等待,直到进程完全退出,才会进入下一个实例 HANDLE pHandle = NULL; do  {  pHandle = ...

  3. 廖雪峰Java1-4数组操作-5命令行参数

    adb和ideviceinstaller提供了许多参数供我们使用.命令行参数提供了这样的入口,针对不同的参数执行不同的命令. 1.命令行参数 命令行参数是一个String[] 数组,由JVM接收用户输 ...

  4. SQL按分隔符拆分字段串

    CREATE VIEW [dbo].[Split_BusinessUnit] AS WITH tt AS ( SELECT BusinessUnit.BusinessUnitId , Business ...

  5. arcgis连接Oracle数据库

    arcgis连接Oracle数据库 配置声明:本人的电脑是win10 64位,安装的Oracle是oracleR11gr2 64  arcgis版本位10.2 安装是在同一台电脑上. 一.首先是安装O ...

  6. 使用UtraISO为U盘制作系统启动盘

    安装最新的Ubuntu18.04操作系统: 1.在utraiso软件中打开系统的iso文件: 2.插入U盘: 3.点击[启动]选项卡,选择[写入硬盘映像]: 4.最关键的一步: 刻录校验:打上对勾: ...

  7. c# 未能加载文件或程序集

    最近做项目时碰到这个问题了,goole.百度了半天,整理了以下几种可能: DLL文件名与加载时的DLL文件名不一致, DLL文件根本不存在,即出现丢失情况, 加载DLL路径错误,即DLL文件存在,但加 ...

  8. Json1:使用gson解析、生成json

    Json解析: 1.json第三方解析包:json-lib.gson.jackson.fastjson等2.Google-gson只兼容jdk1.5版本以上:JSON-lib分别支持1.4和1.53. ...

  9. ElasticSearch Java API

    ElasticSearch-Java Client类型 ElasticSearch-TransportClient环境准备 ElasticSearch-TransportClient连接 Elasti ...

  10. http与https之间的区别

    超文本传输协议HTTP协议被用于在Web浏览器和网站服务器之间传递信息,HTTP协议以明文方式发送内容,不提供任何方式的数据加密,如果攻击者截取了Web浏览器和网站服务器之间的传输报文,就可以直接读懂 ...