现在的位置: 首页 > 综合 > 正文

JavaScript中的数组运用

2012年09月01日 ⁄ 综合 ⁄ 共 5857字 ⁄ 字号 评论关闭

复习一下JS中数组的运用。

截取数组:slice(startIndexendIndex)

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

 

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

splice(startIndexhowmanyelement1~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(01);
        
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 = [13579];
    
var arr2 = [246781013];
    
//循环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 = [245678];

    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);
    }
}

 

 

抱歉!评论已关闭.