在工作中都会经常用到的一些基础算法,可以很快解决问题.这些都是在工作中总结的,希望可以帮助到大家.

一、数组乱序

arr.sort(function randomsort(a, b) {
return Math.random() > .5 ? -1 : 1;
});

function randomSort(a){
    var arr = a,
   random = [],
   len = arr.length;
     for (var i = 0; i < len; i++) {
      var index = Math.floor(Math.random()*(len - i));
      random.push(a[index]);
      arr.splice(index,1);
    }
    return random;
  }

二、数组排序

常用与价格排序
let newArr = [
  {"name": "along","price":"20"},{"name": "along","price":"50"},{"name": "along","price":"40"}
]
newArr.sort(function(a, b) { 
return a.price - b.price; //小到大 /b
.price - a.price 大到小
});

三、取最小值或者最大值

Minarr(arr){
  return Math.min(...arr); //取最小值
}

Maxarr(arr){
  return Math.max(...arr); //取最大值
}

四、数组值为对象去重

1.

setArr (arr) {
  var result = [];
  var obj = {};
  for(var i =0; i<arr.length; i++){
    if(!obj[arr[i].id]){
      result.push(arr[i]);
      obj[arr[i].id] = true;
    }
  }
  return result;
}

2.

function obj2key(obj, keys) {
  var n = keys.length,
  key = [];
  while (n--) {
    key.push(obj[keys[n]]);
  }
  return key.join('|');
}
function uniqeByKeys(array, keys) {
  var arr = [];
  var hash = {};
  for (var i = 0, j = array.length; i < j; i++) {
    var k = obj2key(array[i], keys);
    if (!(k in hash)) {
      hash[k] = true;
      arr .push(array[i]);
    }
  }
  return arr;
}
newArr = uniqeByKeys(newArr, ['video_pic']);  //newArr:去重数组  video_pic:去重value

五、查找元素在数组中位置

function indexOf(arr, item) {
  if (Array.prototype.indexOf){ //判断当前浏览器是否支持
    return arr.indexOf(item);
  } else {
    for (var i = 0; i < arr.length; i++){
      if (arr[i] === item){
        return i;
      }
    }
  }
  return -1; //总是把return -1暴漏在最外层
}

六、递归

function factorialize(num){
  if(num < 0){
    return -1;
  }
  if(num === 0 || num === 1){
    return 1;
  }
  if(num >1){
    return num * factorialize(num-1)
  }
}

  

js中常用的算法排序的更多相关文章

  1. 今天给大家分享一下js中常用的基础算法

    今天给大家分享一下js中常用的基础算法,废话不多说,直接上代码: 1.两个数字调换顺序 ,b= function fun(a,b){ b = b - a ;// a = 2 ; b = 2 a = a ...

  2. ACM 中常用的算法有哪些? 2014-08-21 21:15 40人阅读 评论(0) 收藏

    ACM 中常用的算法有哪些?作者: 张俊Michael 网络上流传的答案有很多,估计提问者也曾经去网上搜过.所以根据自己微薄的经验提点看法. 我ACM初期是训练编码能力,以水题为主(就是没有任何算法, ...

  3. js中常用的操作

    1.js中常用的数组操作 2.js中常用的字符串操作 3.js中常用的时间日期操作 4.定时器

  4. 基础篇:1.JavaScript运行在html中,引用有几种方式?—— 6.js中常用的输出方式?

    书接上文,上文提到若干条JavaScript的基础性知识,大部分都是一些概念性的东西,本着认真严谨的态度,我们要认真对待,有些条目的问题是某个知识点的周边延伸,为节约篇幅,就一起整理了,如有描述不对的 ...

  5. Js中常用的字符串,数组,函数扩展

    由于最近辞职在家,自己的时间相对多一点.所以就根据prototytpeJS的API,结合自己正在看的司徒大神的<javascript框架设计>,整理了下Js中常用一些字符串,数组,函数扩展 ...

  6. 【温故知新】——原生js中常用的四种循环方式

    一.引言 本文主要是利用一个例子,讲一下原生js中常用的四种循环方式的使用与区别: 实现效果: 在网页中弹出框输入0   网页输出“欢迎下次光临” 在网页中弹出框输入1   网页输出“查询中……” 在 ...

  7. Spark中常用的算法

    Spark中常用的算法: 3.2.1 分类算法 分类算法属于监督式学习,使用类标签已知的样本建立一个分类函数或分类模型,应用分类模型,能把数据库中的类标签未知的数据进行归类.分类在数据挖掘中是一项重要 ...

  8. JS中常用开发知识点

     JS中常用开发知识点 1.获取指定范围内的随机数 2.随机获取数组中的元素 3.生成从0到指定值的数字数组 等同于: 4.打乱数字数组的顺序 5.对象转换为数组 //注意对象必须是以下格式的才可以通 ...

  9. js中常用的对象—String的属性和方法

    今天说一下,js中常用的内置对象——String对象它有以下几个常用的属性:lengthprototype 有以下几个常用的方法:parseInt()转换为数字parseFloat()转换为数字,支持 ...

随机推荐

  1. allure报告定制(pytest+jenkins)

    环境及安装可查看 pytest+jenkins安装+allure导出报告 要让allure报告更漂亮,更直观,需要在脚本中写入allure特性 一开始allure调用step().story().fe ...

  2. Java NIO学习与记录(三): Scatter&Gather介绍及使用

     Scatter&Gather介绍及使用 上一篇知道了Buffer的工作机制,以及FileChannel的简单用法,这一篇介绍下 Scatter&Gather 1.Scatter(分散 ...

  3. Codeforces Round #555 (Div. 3) C2. Increasing Subsequence (hard version)【模拟】

    一 题面 C2. Increasing Subsequence (hard version) 二 分析 需要思考清楚再写的一个题目,不能一看题目就上手,容易写错. 分以下几种情况: 1 左右两端数都小 ...

  4. Windows里下载并安装phpstudy(图文详解)

    不多说,直接上干货! 帮助站长快速搭建网站服务器平台! phpstudy软件简介 此是基于phpStudy 2016.01.01. 该程序包集成最新的Apache+Nginx+LightTPD+PHP ...

  5. ubuntu编译安装protobuf

    测试环境:Ubuntu 16.04 LTS 到protobuf的release页面 下载源码:https://github.com/protocolbuffers/protobuf/releases/ ...

  6. seajs模块路径解析 简单总结

    最近在试着用 seajs + grunt 搭建项目雏形, 遇到的最大的问题就是 seajs 命名与调用, 简单总结一下. 模块调用 seajs中调用模块有两种方式,seajs.use(ID) . re ...

  7. 1-2 Mobx 入门实践之TodoList(官方Demo)

    第一步:导入模块 import React, { Component } from 'react'; import { observable, autorun,computed } from 'mob ...

  8. json-c开发指南

    网上看到的一片关于json-c的文章.收藏一下,忘记了出处,尽请作者谅解. JSON c语言开发指南   1.    引言 本文档是基于json-c 库对数据交换进行开发所编写的开发指南,及详细解释j ...

  9. C++11 并发(一道笔试题目)

    题目:编写一个程序,开启3个线程,这3个线程的ID分别为A.B.C,每个线程将自己的ID在屏幕上打印10遍,要求输出结果必须按ABC的顺序显示:如:ABCABC….依次递推. #include < ...

  10. Code First配合Entity Framework Power Tools Beta 4使用

    基于现有数据库生成POCO数据类和数据库上下文需要借助Visual Studio一个扩展插件-- Entity Framework Power Tools(一个Code First反向工程工具).只要 ...