1.找出元素在数组中的位置。

 function indexOf(arr, item) {
if(Array.prototype.indexOf){ //判断浏览器是否支持indexOf方法
return arr.indexOf(item);
}else{
for(var i=0; i<arr.length; i++){
return i;
}
}
return -1;
}
console.log("3在数组[1,2,3,4]中的位置:"+ indexOf([1,2,3,4],3)); //3在数组[1,2,3,4]中的位置:2

2.计算数组中元素的和。

 /*function sum(arr){
var all=0;
for(var i=0; i<arr.length; i++){
if(typeof arr[i] == "number"){
all += arr[i];
}
}
return all;
}*/
function sum(arr){
return eval(arr.join("+"));
}
console.log("数组元素求和:"+ sum([1,2,3])); //数组元素求和:6

3.移除数组 arr 中的所有值与 item 相等的元素。不要直接修改数组 arr,结果返回新的数组。

 function remove(arr, item) {
var a=[];
for(var i=0; i<arr.length; i++){
if(arr[i]!=item){
a.push(arr[i]);
}
}
return a;
}
console.log(remove([1,2,3,4,2,3],2)); //[ 1, 3, 4, 3 ]

4.移除数组 arr 中的所有值与 item 相等的元素,直接在给定的 arr 数组上进行操作,并将结果返回。

 function removeWithoutCopy(arr,item){
for(var i=0; i<arr.length;i++){
if(arr[i]==item){
arr.splice(i,1);//这里的1可以理解为每遇到item就删除数组中的1个元素
i--;//splice(i,1)删除一个元素,必须让i值减一,否则会跳过下一个元素
}
}
return arr;
}
console.log(removeWithoutCopy([1,2,3,4,2,3],2));//[ 1, 3, 4, 3 ]

5.在数组 arr 末尾添加元素 item。不要直接修改数组 arr,结果返回新的数组。

 function append(arr,item){
var a = arr.slice(0);//splice()可从已有的数组中返回选定的元素:arrayObj.slice(start,end);
a.push(item);
return a;
}
console.log(append([1, 2, 3, 4], 10)); //[ 1, 2, 3, 4, 10 ]

6.删除数组 arr 最后一个元素。不要直接修改数组 arr,结果返回新的数组。

 function truncate(arr){
return arr.slice(0,arr.length-1);
}
console.log(truncate([1,2,3,4]));//[ 1, 2, 3 ]

7.在数组 arr 开头添加元素 item。不要直接修改数组 arr,结果返回新的数组。

 function prepend(arr,item){
var a = arr.slice(0); //unshift() 方法可向数组的开头添加一个或更多元素,并返回新的长度。arrayObject.unshift(newelement1,newelement2,....,newelementX)
a.unshift(item);
return a ;
}
console.log(prepend([1,2,3,4],10)); //[ 10, 1, 2, 3, 4 ]
 function prepend(arr,item){
return [item].concat(arr);
}
console.log(prepend([1,2,3,4],10)); //[ 10, 1, 2, 3, 4 ]

8.删除数组 arr 第一个元素。不要直接修改数组 arr,结果返回新的数组。

 /*function curtail(arr){
var a = arr.slice(0);
a.shift();
return a;
}*/
function curtail(arr){
return arr.slice(1);
}
console.log(curtail([1,2,3,4])); //[2,3,4]

9.合并数组 arr1 和数组 arr2。不要直接修改数组 arr,结果返回新的数组。

 /*function concat(arr1,arr2){
var a = arr1.slice(0);
for(var i=0; i<arr2.length; i++){
a.push(arr2[i]);
}
return a;
}*/
 function concat(arr1,arr2){
return arr1.concat(arr2);
}
console.log(concat([1, 2, 3, 4], ['a', 'b', 'c', 1]));//[ 1, 2, 3, 4, 'a', 'b', 'c', 1 ]

10.在数组 arr 的 index 处添加元素 item。不要直接修改数组 arr,结果返回新的数组。

 function insert(arr,item,index){
return arr.slice(0,index).concat(item,arr.slice(index));
}
console.log(insert([1,2,3,4],'z',2));//[ 1, 2, 'z', 3, 4 ]

11.统计数组 arr 中值等于 item 的元素出现的次数。

 function count(arr,item){
var cnt=0;
for(var i=0; i<arr.length; i++){
arr[i] == item ? cnt++ : 0;
}
return cnt;
}
console.log(count([1, 2, 4, 4, 3, 4, 3], 4));//

12.找出数组 arr 中重复出现过的元素************************************************

 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;
}
console.log(duplicates([1, 2, 4, 4, 3, 3, 1, 5, 3]));

13.为数组 arr 中的每个元素求二次方。不要直接修改数组 arr,结果返回新的数组。

 /*function square(arr){
var a = arr.slice(0),
b = [];
for(var i=0; i<arr.length; i++){
b.push(a[i]*a[i]);
}
return b;
}*/
/*// 使用map
function square(arr) {
return arr.map(function(e) {
return e * e;
})
}*/
const square = arr => arr.map(e => e* e);
console.log(square([1,2,3,4]));

14.在数组 arr 中,查找值与 item 相等的元素出现的所有位置********************************

 function findAllOccurrences(arr,target){
var a=[];
arr.forEach(function(val,index){
val !== target || a.push(index);
}); return a;
}
//console.log(findAllOccurrences('abcdefabc',target)); //为什么加上这句就错了呢?

__proto__:Array[0]

JavaScript数组实战小练习的更多相关文章

  1. javascript 数组的组合

    javascript 数组的组合 一.前言 二.数组的组合 concat()方法 push(...items) 其他方法 三.结束语 一.前言 今天在开发项目过程中,遇到了一个需求,先请求了30个数据 ...

  2. Javascript数组操作

    使用JS也算有段时日,然对于数组的使用,总局限于很初级水平,且每每使用总要查下API,或者写个小Demo测试下才算放心,一来二去,浪费不少时间:思虑下,堪能如此继续之?当狠心深学下方是正道. 原文链接 ...

  3. 也谈面试必备问题之 JavaScript 数组去重

    Why underscore (觉得这部分眼熟的可以直接跳到下一段了...) 最近开始看 underscore.js 源码,并将 underscore.js 源码解读 放在了我的 2016 计划中. ...

  4. ( 译、持续更新 ) JavaScript 上分小技巧(四)

    后续如有内容,本篇将会照常更新并排满15个知识点,以下是其他几篇译文的地址: 第一篇地址:( 译.持续更新 ) JavaScript 上分小技巧(一) 第二篇地址:( 译.持续更新 ) JavaScr ...

  5. ( 译、持续更新 ) JavaScript 上分小技巧(三)

    最近家里杂事较多,自学时间实在少的可怜,所以都在空闲时间看看老外写的内容,学习之外顺便翻译分享~等学习的时间充足些再写写自己的一些学习内容和知识点分析(最近有在接触的:复习(C#,SQL).(学习)T ...

  6. ( 译、持续更新 ) JavaScript 上分小技巧(二)

    考虑到文章过长,不便于阅读,这里分出第二篇,如有后续,每15个知识点分为一篇... 第一篇地址:( 译.持续更新 ) JavaScript 上分小技巧(一) 第三篇地址:( 译.持续更新 ) Java ...

  7. ( 译、持续更新 ) JavaScript 上分小技巧(一)

    感谢好友破狼提供的这篇好文章,也感谢写这些知识点的作者们和将他们整理到一起的作者.这是github上的一篇文章,在这里本兽也就只做翻译,由于本兽英语水平和编程能力都不咋地,如有不好的地方也请多理解体谅 ...

  8. 摘:JavaScript性能优化小知识总结

    原文地址:http://www.codeceo.com/article/javascript-performance-tips.html JavaScript的性能问题不容小觑,这就需要我们开发人员在 ...

  9. javascript数组浅谈2

    上次说了数组元素的增删,的这次说说数组的一些操作方法 join()方法: ,,] arr.join("_") //1_2_3 join方法会返回一个由数组中每个值的字符串形式拼接而 ...

随机推荐

  1. Android学习06Android应用程序的基本组件

    一个Android应用程序可以由几个不同的组件构成,Android应用程序的基本组件包括:Activity,Service,BroadcastReceiver,ContentProvider和Inte ...

  2. PV和UV代表什么(转)

    PV(page view),即页面浏览量,或点击量;通常是衡量一个网络新闻频道或网站甚至一条网络新闻的主要指标.  高手对pv的解释是,一个访问者在24小时(0点到24点)内到底看了你网站几个页面.这 ...

  3. Ubuntu 14.04 下安装搜狗输入法,不要删除ibus

    今天安装了 sougou输入法.在ubuntu下面,然后网上一般的帖子都是要求你先删除 ibus 但是你删除了ibus之后,就会导系统设置被删除很多设置项,甚至无法打开, 所有你设置ubuntu输入法 ...

  4. Task的一些用法总结

    一.Task和多线程以及异常的捕获示例代码: static void Main(string[] args) { // 产生CancellationToken的类,该类允许使用Cancel方法终止线程 ...

  5. Android开发:使用Fragment改造TabActivity

    TabActivity在API 13(Android 3.2)被标记为过期,需要使用Fragment来实现,Fragment是Android 3.0引入的一个概念,主要就是为了适应各种不同的屏幕大小( ...

  6. pat09-散列3. Hashing - Hard Version (30)

    09-散列3. Hashing - Hard Version (30) 时间限制 200 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 HE, Qin ...

  7. web前端与后台数据访问的对象封装

    前言:通常情况下,在不使用angularJS/nodeJS/react等这类完整性的解决方案的js时,前端与后台的异步交互都是使用Ajax技术进行解决 一:作为java web开发工程师可能以下代码是 ...

  8. 在浏览器中对访问的网页中的cookie添加和修改

    做权限相关的东西,使用到了cookie,关于它的安全性,cookie在浏览器中,通过插件是可以对其进行修改的,如下: 1.FireFox 安装Edit This Cookie 插件,之后点击插件图标即 ...

  9. 【U1结业机试题】新闻内容管理系统:解析XML文件读取Html模版生成网页文件

    一.作业要求: 1.在xml文件中创建新闻节点news,包含标题.作者.日期.正文等信息 2.创建HTML模板文件 3.读取xml中所有新闻信息,并使用新闻信息替换模板文件中占位符,从而为每一条新闻生 ...

  10. Paxos、ZAB、RAFT协议

    这三个都是分布式一致性协议,ZAB基于Paxos修改后用于ZOOKEEPER协议,RAFT协议出现在ZAB协议之后,与ZAB差不多,也有很大区别. 1. Paxos 分布式节点分为3种角色, Prop ...