zoukankan      html  css  js  c++  java
  • JS能力测评经典题之数组

    数组题

    1.题目描述

    找出元素 item 在给定数组 arr 中的位置 
    输出描述:
    如果数组中存在 item,则返回元素在数组中的位置,否则返回 -1

    输入例子:
    indexOf([ 1, 2, 3, 4 ], 3)
    输出例子:
    2
    function indexOf(arr, item) {
    	var index = -1;
        for( var i=0;i<arr.length;i++){
            if( arr[i] == item){
                index = i;
                break;
            }
        }
        return index;
    }
    

      

    2.题目描述

    计算给定数组 arr 中所有元素的总和 
    输入描述:
    数组中的元素均为 Number 类型


    输入例子:
    sum([ 1, 2, 3, 4 ])

    输出例子:
    10
    function sum(arr) {
    	var osum = 0;
        for(var i=0;i<arr.length;i++){
        	osum += arr[i];    
        }
        return osum;
    }

    3.题目描述

    移除数组 arr 中的所有值与 item 相等的元素。不要直接修改数组 arr,结果返回新的数组 
    输入例子:
    remove([1, 2, 3, 4, 2], 2)

    输出例子:
    [1, 3, 4]
    function remove(arr, item) {
    	var newArr = new Array();
    	alert(newArr.length);
        for( var i=0;i<arr.length;i++){
            if( arr[i]!=item){
                if(newArr.length==0){
                	newArr[0] = arr[i];
                } else {
                	newArr[newArr.length] = arr[i];
                }
            }
        }
        return newArr;
    }
    

      

    4.题目描述

    移除数组 arr 中的所有值与 item 相等的元素,直接在给定的 arr 数组上进行操作,并将结果返回 
    输入例子:
    removeWithoutCopy([1, 2, 2, 3, 4, 2, 2], 2)
    输出例子:
    [1, 3, 4]
    function removeWithoutCopy(arr, item) {
    	
    	for( var i=0;i<arr.length;i++){
    		if( arr[i]==item){
    			arr.splice(i,1);
    			i=i-1;
    		}
    	}
    	return arr;
    } 
    

     

    5.题目描述

    在数组 arr 末尾添加元素 item。不要直接修改数组 arr,结果返回新的数组 
    输入例子:
    append([1, 2, 3, 4],  10)
    输出例子:
    [1, 2, 3, 4, 10]
    function append(arr, item) {
    	var newArr = new Array();
    	var len = arr.length;
    	for(var i=0;i<len;i++){
    		newArr[i] = arr[i];
    	}
    	newArr[len] = item;
    	return newArr;
    }
    

    坑点:如果你直接 var newArr = arr;就错了,因为newArr和arr指的是同一块内存,你修改了newArr其实也修改了arr,和题目意思相背离.而new Array()是新建一个对象,新开辟一块内存,两者互不影响.

    考点:面向对象思想,类和对象.对象是类的实例化,对象之间的简单赋值,只是引用的赋值,所指的内存是没有变的

    
    

    6.题目描述

    合并数组 arr1 和数组 arr2。不要直接修改数组 arr,结果返回新的数组 
    输入例子:
    concat([1, 2, 3, 4], ['a', 'b', 'c', 1])

    输出例子:
    [1, 2, 3, 4, 'a', 'b', 'c', 1]
    function concat(arr1, arr2) {
    	var newArr = new Array();
    	var i=0;
    	for(i=0;i<arr1.length;i++) {
    		newArr[i] = arr1[i];
    	}
    	for( var j=0;j<arr2.length;j++){
    		newArr[i+j] = arr2[j];
    	}
    	return newArr;
    }
    

      

    7.题目描述

    在数组 arr 的 index 处添加元素 item。不要直接修改数组 arr,结果返回新的数组 
    输入例子:
    insert([1, 2, 3, 4], 'z', 2)

    输出例子:
    [1, 2, 'z', 3, 4]
    function insert(arr, item, index) {
    	var newArr = new Array();
        for( var i=0;i<index;i++){
            newArr[i] = arr[i];
        }
        newArr[index] = item;
        for( var i= index;i<arr.length;i++) {
            newArr[i+1] = arr[i];
        }
        return newArr;
    }
    

      

    题目描述

    统计数组 arr 中值等于 item 的元素出现的次数 
    输入例子:
    count([1, 2, 4, 4, 3, 4, 3], 4)
    输出例子:
    3
    function count(arr, item) {
    	var number = 0;
    	for(var i=0;i<arr.length;i++) {
    		if(arr[i]==item){
    			number++;
    		}
    	}
    	return number;
    }
    

      坑点:仅对自己而言,一开始想到了Array.indexOf(item,start);但是这个函数返回的是找到item首次出现的位置,若找不到返回-1.

    8.题目描述

    找出数组 arr 中重复出现过的元素 
    输入例子:
    duplicates([1, 2, 4, 4, 3, 3, 1, 5, 3]).sort()
    输出例子:
    [1, 3, 4]
    function duplicates(arr) {
    	var newArr = new Array();
    	var flag =0;
    	var k=0;
    	for(var i=0;i<arr.length;i++) {
    		for( var j=i+1;j<arr.length-1;j++) {
    			if( arr[i]==arr[j]) {
    				for( k=0;k<newArr.length;k++) {
    					if(newArr[k]==arr[i]) 
    					flag = 1;
    				}
    				if( flag==0) {
    					newArr[k] = arr[i];
    					k++;
    				}
    			}
    		}
    	}
    	return newArr;
    }
    

      

  • 相关阅读:
    A计划
    edu_6_4_1
    edu_6_2_2
    edu_6_3_1
    hdu 1205 吃糖果【鸽巢原理】
    float 为什么不能用== ,或者大于等于,或者小于等于
    素数筛法及其优化
    hdu 1106 排序
    hdu 1164 Eddy's research I
    java 格式化输出 printf 总结
  • 原文地址:https://www.cnblogs.com/learning-/p/6597093.html
Copyright © 2011-2022 走看看