js数组增删查改

一、插入

  1. 顺序插入

 1 function Insert(arr, n, data){
 2
 3             //若插入数据位置不在表尾
 4             if (n < arr.length)
 5             {
 6                 //将要插入位置之后元素依次向后移动一位
 7                 for (var i = seqList.ListLen - 1; i >= n; i--)
 8                 {
 9                     seqList.ListData[i + 1] = seqList.ListData[i];
10                 }
11             }
12             //将数据插入到位置为n的位置并将数组的长度加1
13             seqList.ListData[n-1] = data;
14             seqList.ListLen++;
15             return true;
16 }

二、删除

  1. 原型方法

//给Array本地对象增加一个原型方法,它用于删除数组条目中重复的条目(可能有多个),返回值是一个包含被删除的重复条目的新数组。
//the first method------prototype----
            Array.prototype.distinct = function(){
              var arr=[];
              var obj={}; //对象承接
              for(var i=0,len=this.length;i<len;i++){
                  if(!obj[this[i]]){
                      obj[this[i]]=1;
                      arr.push(this[i]);
                  }
              }
              return arr;
          };

          var arr = new Array();
          arr.push(1,3,2,4,4,4,5,6,7,8,8,8,9,0);
          console.log(arr);
          console.log(arr.distinct());        

//the second method-----prototype
  Array.prototype.distinct = function(){
    var arr=[];
    for(var i=0,len=this.length;i<len;i++){
      if(this[i]==this[i+1]){
        continue;
      }else{
        arr.push(this[i]);
      }
    }
    return arr;
  };
  var arr = new Array();
  arr.push(1,3,2,4,4,4,5,6,7,8,8,8,9,0);
  console.log(arr);
  console.log(arr.distinct());
  //slice(start,end) 返回的是裁下来的元素数组
  console.log(arr.slice(2,4));
  console.log(arr);
  //splice() 方法与 slice() 方法的作用是不同的,splice() 方法会直接对数组进行修改
  arr.splice(0,2,80);
  console.log(arr);

//the third method-----前一个和之后全部的元素比较

  Array.prototype.distinct = function(){
    for(var i=0,len=this.length;i<len;i++){
      for(var j=i+1;j<=len;j++){
        if(this[i]==this[j]){
          console.log(this[j]);
          this.splice(j,1);
          j--; //得考虑如果删除一个元素,j的值需要减1
          len--;
        }
      }
    }
  //return this;
  };
  var arr = new Array();
  arr.push("a","b","c","c","b","bb","dd","d","aa","c","bb");
  //var cc = arr.splice(5,1)[0];
  console.log(arr);
  //console.log(cc);
  arr.distinct()
  console.log(arr);

  2. 普通函数

  

 function removeRepeat(arr){
    var array=[];
    var obj={};
    for(var i=0,len=arr.length;i<len;i++){
      if(!obj[arr[i]]){
        obj[arr[i]]=1;
        array.push(arr[i]);
      }
    }
    return array;
  };

  var arr = new Array(1,3,2,4,4,4,5,6,7,8,8,8,9,0);
  var array = removeRepeat(arr);
  console.log("removeRepeat : " + array);
  console.log(arr);

三、增加

四、查找

五、排序

/*//-------------冒泡排序(从小到大)-------------
              for(var i=0,len=arr.length;i<len;i++){
                  for(var j=i+1;j<len;j++){
                    if(arr[i]>arr[j]){  //将最大的放在最后
                        var temp=0;
                        t=arr[i];
                        arr[i]=arr[j];
                        arr[j]=temp;
                    }
                  }
              }
              //--------第二种(改善)------------
              for(var i=1,len=arr.length;i<len;i++){
                  for(var j=0;j<len-i;j++){  //已经排序好的最大数组不必在比较
                    if(arr[j]>arr[j+1]){
                        var temp=0;
                        t=arr[i];
                        arr[i]=arr[j];
                        arr[j]=temp;
                    }
                  }
              }
              */
            /*//-------------选择排序(从小到大)-------------
              for(var i=0,len=arr.length-1;i<len;i++){
                  int min = i;
                  for(var j=i+1;j<len;j++){
                    if(arr[min]>arr[j]){
                        min=j;
                    }
                }
                if(min!=i){
                    var temp=0;
                    t=arr[min];
                    arr[min]=arr[i];
                    arr[i]=temp;
                }
              }*/
              /*//-------------直接插入排序(从小到大)-------------
              for (int i = 1; i < arr.Length; i++){
                if (arr[i - 1] > arr[i])
                {
                    int temp = arr[i];  //每次取出当前的要比较的值
                    int j = i;
                    while (j > 0 && arr[j - 1] > temp) //大于它的话,要赋值给它
                    {
                        arr[j] = arr[j - 1];
                        j--;
                    }
                    arr[j] = temp;
                }
            }*/
              /*//-------------js实现快速排序(从小到大)-------------*/
              /*//-----------------first---------------
            var quickSort = function(arr){
                var arr = arr.concat(); //concat的新用法(深复制)
                if(arr.length<=1) return arr;
                var index = Math.floor(arr.length/2);
                var centerValue = arr.splice(index,1);
                //console.log(centerValue);
                var left = [];
                var right = [];
                for(var i=0,len=arr.length;i<len;i++){
                    if(centerValue>=arr[i]){
                        left.push(arr[i]);
                    }else{
                        right.push(arr[i]);
                    }
                }
                // debugger
                //console.log(quickSort(left));
                //console.log(right);
                var res1 = arguments.callee(left);
                var res2 = arguments.callee(right);
                //return left.concat(right);
                return res1.concat(centerValue,res2);
            }
            var arr=[9,8,7,4,5,3,77];
              var result = quickSort(arr);
              console.log(result);
              console.log(arr);*/
              //-----------------second---------------
              var quickSort = function(arr){
                if(arr.length<=1) return arr;
                var index = Math.floor(arr.length/2);
                console.log(index); //1
                var centerValue = arr.slice(index,index+1)[0];
                console.log(centerValue); //5
                var left = [];
                var right = [];
                for(var i=0,len=arr.length;i<len;i++){
                    if(centerValue>=arr[i]){
                        left.push(arr[i]);
                    }else{
                        right.push(arr[i]);
                    }
                }
                var res1 = arguments.callee(left);
                var res2 = arguments.callee(right);
                return res1.concat(res2);
            }
            var arr=[9,8,7,4,5,3,4,77];
              //var result = quickSort(arr);
              //console.log(result);
              console.log(arr);
              var aa=[3,4];
              //console.log(aa.slice(1,2));
              console.log(aa.splice(0,0));
              /*//-------------反转排序-----------------
              for(var i=0,len=arr.length-1;i<len/2;i++){
                    var temp=0;
                    t=arr[i];
                    arr[i]=arr[len-1-i];
                    arr[len-1-i]=temp;
              }*/
              /*//-------------参数排序(从小到大)-----------------
              function mySort() {
                var tags = new Array();//使用数组作为参数存储容器
                tags = Array.prototype.slice.call(arguments);
                tags.sort(function(a,b){
                    return a-b;
                })
                return tags;//返回已经排序的数组
            }
             
            var result = mySort(50,11,16,32,24,99,57,100); //传入参数个数不确定
            console.info(result); //显示结果
              */
时间: 2024-11-04 21:43:02

js数组增删查改的相关文章

js中数组增删查改unshift、push、pop、shift、slice、indexOf、concat、join

js中数组增删查改unshift.push.pop.shift.slice.indexOf.concat.join 原文地址:https://www.cnblogs.com/mahmud/p/10301590.html

node.js+express+mongoose实现用户增删查改案例

node.js+express+mongodb对用户进行增删查改 一.用到的相关技术 使用 Node.js 的 express 框架搭建web服务 使用 express 中间件 body-parse 解析表单 post 请求体 使用 art-template 模板引擎渲染页面 使用第三方包 mongoose 来操作 MongoDB 数据库 二.在命令行用 npm 执行相关的命令 初始化项目,在命令行执行 npm init 然后一路回车就行了(或者直接 npm init -y)生成 package

8天学通MongoDB——第二天 细说增删查改

看过上一篇,相信大家都会知道如何开启mongodb了,这篇就细说下其中的增删查改,首先当我们用上一篇同样的方式打开mongodb,突然 傻眼了,擦,竟然开启不了,仔细观察“划线区域“的信息,发现db文件夹下有一个类似的”lock file”阻止了mongodb的开启,接下来我们要做的就 是干掉它,之后,开启成功,关于mongodb的管理方式将在后续文章分享. 一: Insert操作 上一篇也说过,文档是采用“K-V”格式存储的,如果大家对JSON比较熟悉的话,我相信学mongodb是手到擒来,我

Mongodb学习总结-2(细说增删查改)

看过上一篇,相信大家都会知道如何开启mongodb了,这篇就细说下其中的增删查改,首先当我们用上一篇同样的方式打开mongodb,突然 傻眼了,擦,竟然开启不了,仔细观察“划线区域“的信息,发现db文件夹下有一个类似的”lock file”阻止了mongodb的开启,接下来我们要做的就 是干掉它,之后,开启成功,关于mongodb的管理方式将在后续文章分享. 一: Insert操作 上一篇也说过,文档是采用“K-V”格式存储的,如果大家对JSON比较熟悉的话,我相信学mongodb是手到擒来,我

php mysql增删查改

php mysql增删查改代码段 $conn=mysql_connect('localhost','root','root');  //连接数据库代码 mysql_query("set names utf8");  //传输编码 mysql_query('sql'$conn); //查找名为sql的数据库 admin为表名: 查找数据代码段: $sql="select * from admin ";  //查询表: $sql="select  * from

在MVC程序中,使用泛型仓储模式和工作单元实现增删查改

在这片文章中,我将自己动手为所有的实体:写一个泛型仓储类,还有一个工作单元. 工作单元的职责就是:为每一个实体,创建仓储实例.仓储(仓库)的职责:增删查改的功能实现. 我们将会在控制器中,创建工作单元类(UnitOfWork)的实例,然后根据实体,创建仓储实例,再就是使用仓储里面的方法,做操作了. 下面的图中,解释了,仓储和EF 数据上文的关系,在这个图里面,MVC控制器和仓储之间的交互,是通过工作单元来进行的,而不是直接和EF接触. 那么你可能就要问了,为什么要使用工作单元??? 工作单元,就

Asp.Net+Oracle+EasyUI简单增删查改

Asp.Net+Oracle+EasyUI简单增删查改 概要:网上有很多关于EasyUI前端框架的资料,本人在学习的基础上,基于自己之前搭建的框架(Oracle+Ado.Net),配合EasyUI实现一套简单的增删查改. 正文: 在实体层新建一个EMP.cs,继承至BaseModel 1 namespace myOracle.Model 2 { 3 public class Emp:BaseModel 4 { 5 public Emp() 6 { 7 base.PrimaryKey = "emp

MongoDB入门学习(三):MongoDB的增删查改

对于我们这种菜鸟来说,最重要的不是数据库的管理,也不是数据库的性能,更不是数据库的扩展,而是怎么用好这款数据库,也就是一个数据库提供的最核心的功能,增删查改. 因为MongoDB存储数据都是以文档的模式,所以在操作它的数据时,也是以文档为单位的.那么我们实现增删查改也是以文档为基础,不知道文档是什么的同学可以看看上篇介绍的基本概念. 1.插入文档 向MongoDB集合中插入文档的基本方法是insert: 单个插入 > document = {key : value} > db.collecti

C++实现静态顺序表的增删查改以及初始化

C++实现静态顺序表的增删查改 顺序表:用一段地址连续的存储单元依s次存储数据元素的线性结构,是线性表的一种. //SeqList.h #pragma once #include <assert.h> #include <string.h> #define MAX_SIZE 5 typedef int DataType; //定义顺序表结构体 typedef struct SeqList { DataType array[MAX_SIZE];  //数据块数组 size_t siz