js 简单算法
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 简单算法的更多相关文章
- JS简单实现:根据奖品权重计算中奖概率实现抽奖的方法
本文主要介绍:使用 JS 根据奖品权重计算中奖概率实现抽奖的方法. 一.示例场景 1.1.设置抽奖活动的奖项名称 奖项名称:["一等奖", "二等奖", &qu ...
- 总结下js排序算法和乱序算法
其实本人最怕的就是算法,大学算法课就感觉老师在讲天书,而且对于前端来说,算法在实际的应用中实在是很有限.毕竟算法要依靠大量的数据为基础才能发挥出算法的效率,就浏览器那性能,......是吧,退一万步说 ...
- js简单 图片版时钟,带翻转效果
js简单 图片版时钟,带翻转效果 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"& ...
- js简单操作Cookie
贴一段js简单操作Cookie的代码: //获取指定名称的cookie的值 function getCookie(objName) { var arrStr = document.cookie.spl ...
- js简单弹出层、遮罩层
<html> <head> <title>js简单弹出层</title> <style> /*阴影边框效果*/ .box-shadow-1 ...
- Tourist.js – 简单灵活的操作指南和导航插件
Tourist.js 是一个基于 Backbone 和 jQuery 开发的轻量库,帮助你在应用程序创建简单易用的操作指南和导航功能.相比网站,它更适合用于复杂的,单页网站类型的应用程序.Touris ...
- js简单显示和隐藏div,触发超链接,动态更改button值,setInterval()简单使用,jquery easyui弹出框简单使用 .
js简单显示和隐藏div .<!DOCTYPE html> .<html> .<head> .<meta charset="UTF-8"& ...
- Gulp.js - 简单、直观的自动化项目构建工具
Gulp.js 是一个简单.直观的构建系统.崇尚代码优于配置,使复杂的任务更好管理.通过结合 NodeJS 的数据流的能力,你能够快速构建.通过简单的 API 接口,只需几步就能搭建起自己的自动化项目 ...
- Node.js简单介绍并实现一个简单的Web MVC框架
编号:1018时间:2016年6月13日16:06:41功能:Node.js简单介绍并实现一个简单的Web MVC框架URL :https://cnodejs.org/topic/4f16442cca ...
随机推荐
- KeyBoardEvent
顺便提一句 在纯Flash CS环境下初始要这样写stage?init(null):addEventListener (Event.ADDED_TO_STAGE, init);即 if(stage ! ...
- C#、AE开发入门之打开TIFF文件并显示
继上篇文章,本次打开TIFF文件,附上源码及其注释 private void button2_Click(object sender, EventArgs e) { axMapControl1.Cle ...
- 数据库SQL语言学习--上机练习2(连接查询 嵌套查询)
上机练习2 1. 启动SQL Server 2008中的 SQL Server Management Studio. 2. 针对下面三张基本表进行操 ...
- 信息安全-加密:RAS 加密
ylbtech-信息安全-加密:RAS 加密 1.返回顶部 1. RSA 是不对称的加密(加密密钥和解密密钥不同 其中 一个为公钥,一个为私钥): 公钥和私钥的产生是基于一对很大的素数(十进制来说 ...
- C++ Programming Language中的Calculator源代码
C++ Programming Language 4th中的Calculator源代码整理,因为在C++ Programming Language中,涉及了很多文件位置之类的变化,所以,这里只是其中的 ...
- [UE4]读取玩家列表
- [UE4]背景模糊
被遮挡的都会被模糊,没被遮挡的不会模糊
- android Information:Gradle tasks [:dl_version:generateDebugSources, :dl_version:generateDebugAndroidTestSources导致无法实现Preview功能
Androidstudio 出现以下错误导致layout xml无法实现预览功能: Information:Gradle tasks [:dl_version:generateDebugSources ...
- Zabbix配置参数优化
概述:使用zabbix监控服务器已有一段时间,监控的服务器不到100台,发现刷新zabbix页面有卡顿的现象.而且经常报“Zabbix poller processes more than 75% b ...
- element ui中dialog相关问题
一,今天需要在dialog里面引入另一个页面,就是打开dialog显示该页面(把页面放到dialog中),引入的语句如下: <iframe src="view?path=rkdj_b& ...