每日分享!~ JavaScript(js数组如何在指定的位置插入一个元素)
这个想法是在一个面试题中看到的:
题目是这样的:
// 一个数组,在指定的index 位置插入一个元素,返回一个新的数组,不改变原来的数组
<script>
function insert(arr, item, index) {
var newArr = arr.concat()
for (var i = 0; i < newArr.length; i++) {
if (index > 0) {
if (i === index) {
newArr.splice(i,0,item)
}
}
}
return newArr
} document.write(insert([1,2,3,4,5,5],2,2))
</script>
当你遇到这问题:如何处理呢?
在解决这个问题之前,我还不知道数组中的splice方法可以插入一个元素,一直认为splice方法只可以删除一个数组的元素!!! 既然这样,那么废话不多说,介绍介绍splice的用法吧。
-----------------------------------------------------分割线------------------------------------------------------------------------------
splice的用法:
splice() 方法通过删除或替换现有的元素或者原地添加新的元素来修改数组并以数组的形式返回被修改的内容。此方法会改变愿数组,。
具体三个参数如下:
start- 指定修改的开始位置(从0计数)。如果超出了数组的长度,则从数组末尾开始添加内容;如果是负值,则表示从数组末位开始的第几位(从-1计数,这意味着-n是倒数第n个元素并且等价于
array.length-n);如果负数的绝对值大于数组的长度,则表示开始位置为第0位。 deleteCount可选- 整数,表示要移除的数组元素的个数。
- 如果
deleteCount大于start之后的元素的总数,则从start后面的元素都将被删除(含第start位)。 - 如果
deleteCount被省略了,或者它的值大于等于array.length - start(也就是说,如果它大于或者等于start之后的所有元素的数量),那么start之后数组的所有元素都会被删除。 - 如果
deleteCount是 0 或者负数,则不移除元素。这种情况下,至少应添加一个新元素。 item1, item2, ...可选- 要添加进数组的元素,从
start位置开始。如果不指定,则splice()将只删除数组元素。 - 示例:splice() 方式删除数组
var arr = [1,2,2,3,4,5]
arr.splice(1,1) // 第一个参数表示index (索引) 第二个参数表示从这个索引开始,从左往右要删除的长度 。
// 返回的结果是 [2] 改变原来的数组
// 最终arr = [1,2,3,4,5]
示例:splice() 方式添加数组
var arr = [1,2,2,3,4,5]
arr.splice(2,0,4) // 第一个参数表示index(索引) 第二个参数要移除的个数, 第三个参数表示要添加的元素
// 返回的结果为空, 改变原来的数组
// 最终 arr = [1,2,4,2,3,4,5]
总结感悟: 原生js中的内置对象非常有用,我们必须努力掌握好!~ 不然像我一样这个简单的题目的忘记来!记住splice()方法后,便可以轻易的解决掉这个问题啦~~~
每日分享!~ JavaScript(js数组如何在指定的位置插入一个元素)的更多相关文章
- 好程序员web前端分享javascript关联数组用法总结
好程序员web前端分享javascript关联数组用法总结,有需要的朋友可以参考下. Hash关联数组定义 代码如下 // 定义空数组 myhash = { } // 直接定义数组 myhash = ...
- Js数组里剔除指定的元素(不是指定的位置)
s数组里删除指定的元素(不是指定的位置)之前一直是做后端的,从来也没有写过js,但是却一直想学学,也只是基于兴趣而已!现在到了这个公司,确实大量的写js.但也一直都是没有系统的去看过js!都是搞什么查 ...
- JavaScript判断数组是否包含指定元素的方法
本文实例讲述了JavaScript判断数组是否包含指定元素的方法.分享给大家供大家参考.具体如下: 这段代码通过prototype定义了数组方法,这样就可以在任意数组调用contains方法 /** ...
- Js数组里删除指定的元素(不是指定的位置)
转载自:http://my.oschina.net/zh119893/blog/265964 之前一直是做后端的,从来也没有写过js,但是却一直想学学,也只是基于兴趣而已!现在到了这个公司,确实大量的 ...
- [jstips]向数组中插入一个元素
向现有数组中插入一个元素是经常会见到的一个需求.你可以: 使用push将元素插入到数组的尾部: 使用unshift将元素插入到数组的头部: 使用splice将元素插入到数组的中间: 上面那些方法都是常 ...
- 在textarea中鼠标指定的位置插入字符或表情
有些时候我们已经在textarea中输入了一些字符,然后想在鼠标指定的位置插入表情或者字符,这就需要用到jquery的一个小插件了. 代码如下: (function ($) { $.fn.extend ...
- 每天一个JavaScript实例-铺货鼠标点击位置并将元素移动到该位置
<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content ...
- 【转载】C#中使用Insert方法往ArrayList集合指定索引位置插入新数据
ArrayList集合是C#中的一个非泛型的集合类,是弱数据类型的集合类,可以使用ArrayList集合变量来存储集合元素信息,在ArrayList集合操作过程中,可以使用ArrayList集合类的I ...
- 【转载】 C#中List集合使用InsertRange方法在指定的位置插入另一个list集合
在C#的List集合操作过程中,如果在集合中的某个位置插入一个新的元素对象,可以使用Insert方法进行操作.其实List集合也提供了在特定的位置插入另一个集合,然后另一个集合的数据整个写入到当前集合 ...
随机推荐
- UDP和TCP的差异
UDP和TCP传递数据的差异类似于电话和明信片之间的差异. TCP就像电话,必须先验证目标是否可以访问后才开始通讯. UDP就像明信片,信息量很小而且每次传递成功的可能性很高,但是不能完全保证传递成功 ...
- MongoDB中文档操作(二)
一.插入文档 1.db.集合名.insert() 插入一个:db.user.insert({name:"Join",age:13,address:"beijing& ...
- Linux上配置使用iSCSI详细说明
本文详细介绍iSCSI相关的内容,以及在Linux上如何实现iSCSI. 第1章 iSCSI简介 1.1 scsi和iscsi 传统的SCSI技术是存储设备最基本的标准协议,但通常需要设备互相靠近并用 ...
- 怎样在Ubuntu中设置环境变量
首先启动终端. 单击屏幕左上角的Ubuntu图标,在弹出的窗口中点击搜索栏,输入"terminal", 稍等片刻,终端就会赫然在目!二话不说,直接点击! 然后打开环境设置文 ...
- 根据NABCD原则完成的案例项目需求分析及其创新方法
<well> Need:在当下的知识经济时代,社会效率在提升,社会竞争强度也在增大,现代社会对人的素质提出了更高的要求,这导致了越来越多的人心理压力增大.well产品就是为了缓解人们心理压 ...
- ubuntu 16.04启用root用户方法
1.使用:sudo passwd root设置root的密码,如下图所示: 2.使用su root来测试是否可以进入root用户,如果出现#说明已经设置root用户的密码成功,如下图所示:
- 【ShoppingWebCrawler】-基于Webkit内核的爬虫蜘蛛引擎概述
写在开头 在各个电商平台发展日渐成熟的今天.很多时候,我们需要一些平台上的基础数据.比如:商品分类,分类下的商品详细,甚至业务订单数据.电商平台大多数提供了相应的业务接口.允许ISV接入,用来扩展自身 ...
- spot 状压dp
题目大意:数轴上有n个泥点,共有m个木板,求最少用几个木板可以覆盖全部泥点,并求最优方案数(n,m<=15) 看范围,肯定是状压 f[i][j]表示前i个泥点都被覆盖,使用的木板集合为j 转移: ...
- 【源码】otter工程结构
最近在搞数据同步相关的内容,需要对otter的代码进行扩展,所以需要先熟悉一下otter的源码.首先我们整体来看下otter的工程结构.otter的工程结构比较复杂,需要花费一定的时间来理解各个部分的 ...
- BZOJ_3343_教主的魔法_分块+二分查找
BZOJ_3343_教主的魔法_分块+二分查找 题意:教主最近学会了一种神奇的魔法,能够使人长高.于是他准备演示给XMYZ信息组每个英雄看.于是N个英雄们又一次聚集在了一起,这次他们排成了一列被编号为 ...