JavaScript---数组问题

来源:互联网 发布:java并发 多条数据 编辑:程序博客网 时间:2024/06/03 17:47

JavaScript—数组问题

一些简单的JavaScript的数组问题测验


查找数组元素位置

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

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

输出例子:
2

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

数组求和

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

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

输出例子:
10

function sum(arr) {    var sum=0;    for(var i=0;i<arr.length;i++){        sum+=arr[i];    }    return sum;}

移除数组中的元素I

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

输出例子:
[1, 3, 4]

function remove(arr, item) {    var res=[];    for(var i=0;i<arr.length;i++){       if(item==arr[i])continue;       else res.push(arr[i]);    }    return res;}

移除数组中的元素II

移除数组 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(item == arr[i]){            arr.splice(i,1);            i--;        }    }    return arr;}

添加元素I

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

输出例子:
[1, 2, 3, 4, 10]

function append(arr, item) {    var res=[];    res=arr.slice(0);    res.push(item);    return res;}

删除数组最后一个元素

删除数组 arr 最后一个元素。不要直接修改数组 arr,结果返回新的数组
输入例子:
truncate([1, 2, 3, 4])

输出例子:
[1, 2, 3]

function truncate(arr) {    return arr.slice(0,arr.length-1);}

添加元素II

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

输出例子:
[10, 1, 2, 3, 4]

function prepend(arr, item) {       return [item].concat(arr);}

删除数组第一个元素

删除数组 arr 第一个元素。不要直接修改数组 arr,结果返回新的数组
输入例子:
curtail([1, 2, 3, 4])

输出例子:
[2, 3, 4]

function curtail(arr) { return [].concat(arr.slice(1));}

数组合并

合并数组 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 arr=[];    arr=arr1.concat(arr2);    return arr;}

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

输出例子:
[1, 2, ‘z’, 3, 4]

添加元素III

function insert(arr, item, index) {    var res=[];    res=arr.slice(0,index);    res.push(item);    return res.concat(arr.slice(index));}

计数

统计数组 arr 中值等于 item 的元素出现的次数
输入例子:
count([1, 2, 4, 4, 3, 4, 3], 4)

输出例子:
3

 function count(arr, item) {            var c = arr.reduce(function(prev, curr) {                if(curr===item) return prev+1;                else return prev;            }, 0);            return c;        }

查找重复元素

找出数组 arr 中重复出现过的元素
输入例子:
duplicates([1, 2, 4, 4, 3, 3, 1, 5, 3]).sort()

输出例子:
[1, 3, 4]

function duplicates(arr) {     //声明两个数组,a数组用来存放结果,b数组用来存放arr中每个元素的个数     var a = [],b = [];     //遍历arr,如果以arr中元素为下标的的b元素已存在,则该b元素加1,否则设置为1     for(var i = 0; i < arr.length; i++){         if(!b[arr[i]]){             b[arr[i]] = 1;             continue;         }         b[arr[i]]++;     }     //遍历b数组,将其中元素值大于1的元素下标存入a数组中     for(var i = 0; i < b.length; i++){         if(b[i] > 1){             a.push(i);         }     }     return a; }

求二次方

为数组 arr 中的每个元素求二次方。不要直接修改数组 arr,结果返回新的数组
输入例子:
square([1, 2, 3, 4])

输出例子:
[1, 4, 9, 16]

function square(arr) {      return arr.map(function(e) {          return e * e;      })  }

查找元素位置

在数组 arr 中,查找值与 item 相等的元素出现的所有位置
输入例子:
findAllOccurrences(‘abcdefabc’.split(”), ‘a’).sort()

输出例子:
[0, 6]

function findAllOccurrences(arr, target) {    var res=[];    for(var i=0;i<arr.length;i++){        if(arr[i]===target){            res.push(i);        }    }    return res;}
0 0