JavaScript 数组运用实现代码

  截取数组:slice(startIndex,endIndex):

  返回数组中指定开始位置倒结束位置的数组。不改变原数组内容。

  另外还有一个重要的方法,插入、删除或替换数组元素方法:

  splice(startIndex,howmany,element1~elementX):会修改原数组内容。参数含义分别为:“指定开始位置”,“删除多少个元素个数(可以为0)”,“添加到数组中的新元素(从startIndex下标开始)”。

  相关运用

  //题目一:"A[B]C[D]E[F]G"将其分为两个数组,分别是 ACEG 和 [B][D][F].

  

复制代码 代码如下:

  function QuestionFn1() {

  var str = "A[B]C[D]E[F]G";

  var oGetTwoArray = new GetTwoArray();

  //取左右括号中的值

  oGetTwoArray.GetLeftAndRightValue(str);

  oGetTwoArray.GetNoLeftAndRightValue(str);

  var array1 = oGetTwoArray.arrBetweenLeftRight;

  var array2 = oGetTwoArray.arrNoLeftRight;

  alert(array1.join(""));

  alert(array2.join(""));

  }

  //找到左右括号的index

  function GetTwoArray() {

  this.indexLeft = 0; //左括号索引

  this.indexRight = 0; //右括号索引

  this.arrBetweenLeftRight = []; //数组:存放左右括号中的字母

  this.arrNoLeftRight = []; //数组:存放没有括号包围的字母

  //取左右括号中的值

  this.GetLeftAndRightValue = function(str) {

  //找到字符串中左括号的index

  this.indexLeft = str.indexOf('[');

  this.indexRight = str.indexOf(']');

  //取括号中的值(包含括号)

  var value = str.substring(this.indexLeft, this.indexRight + 1);

  //存放到数组中

  this.arrBetweenLeftRight.push(value);

  //剩下的str

  var restStr = str.substr(this.indexRight + 1);

  //如果还有左右括号则继续找

  if (restStr.indexOf('[') != -1 && restStr.indexOf(']') != -1) {

  this.GetLeftAndRightValue(restStr);

  }

  }

  //取没有左右括号包围的值

  this.GetNoLeftAndRightValue = function(str) {

  //找到字符串中左括号的index

  this.indexLeft = str.indexOf('[');

  this.indexRight = str.indexOf(']');

  //取没有左右括号包围的值(跟着右括号的第一个)

  var value = str.substring(0, 1);

  if (value != '[') { //因为第一个就有可能就是左括号

  //存放到数组中

  this.arrNoLeftRight.push(value);

  }

  //剩下的str

  var restStr = str.substr(this.indexRight + 1);

  //如果还有左右括号则继续找

  if (restStr.indexOf('[') != -1 && restStr.indexOf(']') != -1) {

  this.GetNoLeftAndRightValue(restStr);

  }

  //剩下的没有左右括号了,就全部添数组里去

  else if (restStr.indexOf('[') == -1 && restStr.indexOf(']') == -1) {

  this.arrNoLeftRight.push(restStr);

  }

  }

  }

  //题目二:有两个有序整数数组,例如【1, 3, 5, 7, 9】和【2, 4, 6, 7, 8, 10, 13】,设计一个函数使两个数组合并,并且剔除掉两个数组里重复的元素.

  

复制代码 代码如下:

  function QuestionFn2() {

  var arr1 = [1, 3, 5, 7, 9];

  var arr2 = [2, 4, 6, 7, 8, 10, 13];

  //循环arr2中的每一个元素 去跟 arr1中的每一个元素 比较

  for (var j = 0; j < arr2.length; j++) {

  for (var i = 0; i < arr1.length; i++) {

  //如果第二个数组中的数 小于数组一中的 某个数 则插到他前面

  if (arr2[j] < arr1[i]) {

  arr1.splice(i, 0, arr2[j]);

  break;

  }

  //相等则剔除

  else if (arr2[j] == arr1[i]) {

  arr1.splice(i, 1, arr2[j]);

  break;

  }

  //如果 arr2[j] 比 数组1中的 最后一个数还大 则插到最后面去

  else if (arr2[j] > arr1[arr1.length - 1]) {

  arr1.push(arr2[j]);

  }

  }

  }

  alert(arr1.toString());

  }

  //题目三:给定一个整数数组,例如【2, 4, 5, 6, 7, 8】和一个数字,例如10,请设计一个函数找出两个元素,并且使这两个数的和为给定数字,并打印出来.

  

复制代码 代码如下:

  function QuestionFn3() {

  var sum = window.prompt("请输入数组中两数相加的和", 10);

  var arr = [2, 4, 5, 6, 7, 8];

  var isFind = false; //记录是否存在

  for (var i = 0; i < arr.length; i++) {

  for (var j = i + 1; j < arr.length; j++) {

  if (arr[j] + arr[i] == sum) {

  alert(arr[i] + "+" + arr[j] + "=" + sum);

  isFind = true;

  }

  }

  }

  //如果没有找到

  if (!isFind) {

  alert("数组中没有两数相加等于" + sum);

  }

  }

  更多javascript 数组基础可以参考

  javascript数组使用调用方法汇总