JavaScript数组操作函数
A: 购物车会有这样的情况,购物车是一个数组,每一个商品是一个对象,分别对应一个id,和一个num ,然后改变商品的时候需要和购物车对比,如果购物车中有这个商品的话,就只改变这个商品对应的id的num,如果没有这个商品的话就要将这个商品重新作为一个对象插入到购物车中。
判断购物车中有改变Num比较容易达到,关键是如何判断购车车中没有这个商品。方法如下
var arr = [{'cabin_id': , 'num': }]; //购车车数组
function getNum () {
$('.common_table').find('tr.chooseNumTr').each(function(i, item){
var _this = this;
// 去重
var data = {};
for(var i = ; i < arr.length; i++) {
// 循环两个数组判断id相等的时候改变相应的 Num 值便可以了,但是不能在这里 else 的时候直接将商品作为一个新的对象插入到购物车中,
// 因为不相等并不代表购物车中没有
if (parseInt(arr[i].cabin_id) === parseInt($(_this).attr('dataid'))) {
arr[i].num = $(_this).find('.pep').val();
// 相等改变之后直接跳出循环
break;
}
}
// 在这里判断购物车中没有,切记要在循环的外边判断 i 不用再次定义
if(i>=arr.length){
data['cabin_id'] = $(_this).attr('dataid');
data['num'] = $(_this).find('.pep').val();
arr.push(data)
}
});
console.log(arr);
}
1、concat() 连接两个或更多的数组
该方法不会改变现有的数组,而仅仅会返回被连接数组的一个副本。
例如:
<script type="text/javascript">
var arr = [, , ];
var arr1 = [, , ];
document.write(arr.concat(, , arr1));
</script>
输出结果: ,,,,,,,
2、join()
把数组的所有元素放入一个字符串。元素通过指定的分隔符进行分隔。
例如:
<script type="text/javascript">
var arr = ['item 1', 'item 2', 'item 3'];
var list = '<ul><li>' + arr.join('</li><li>') + '</li></ul>';</script> list结果: ‘<ul><li>item </li><li>item </li><li>item </li></ul>’
3、pop() 删除并返回数组的最后一个元素
pop()方法将删除数组的最后一个元素,把数组长度减 1,并且返回它删除的元素的值。
如果数组已经为空,则pop()不改变数组,并返回undefined值
例如:
script type="text/javascript">
var arr = ["George", "John", "Thomas"];
document.write(arr + "<br/>");
document.write(arr.pop() + "<br/>");
document.write(arr);
</script>
输出结果: George,John,Thomas
Thomas
George,John
4、push() 向数组的末尾添加一个或更多元素,并返回新的长度
例如:
<script type="text/javascript">
var arr = ["George", "John", "Thomas"];
document.write(arr + "<br/>"); document.write(arr.push("James") + "<br/>"); document.write(arr);
</script> 输出结果: George,John,Thomas George,John,Thomas,James
5、unshift() 向数组的开头添加一个或更多元素,并返回新的长度
例如:
<script type="text/javascript">
var arr = ["George", "John", "Thomas"];
document.write(arr + "<br/>"); document.write(arr.unshift("James") + "<br/>"); document.write(arr);
</script>
输出结果: George,John,Thomas James,George,John,Thomas
6、reverse() 颠倒数组中元素的顺序
例如:
<script type="text/javascript">
var arr = ["George", "John", "Thomas"];
document.write(arr + "<br/>"); document.write(arr.reverse());
</script> 输出结果: George,John,Thomas
Thomas,John,George
7、shift() 删除并返回数组的第一个元素
例如:
<script type="text/javascript">
var arr = ["George", "John", "Thomas"];
document.write(arr + "<br/>");
document.write(arr.shift() + "<br/>");
document.write(arr);
</script> 输出结果: George,John,Thomas
George
John,Thomas
8、slice(start,end) 从某个已有的数组返回选定的元素
请注意,该方法并不会修改数组,而是返回一个子数组
例如:
script type="text/javascript">
var arr = ["George", "John", "Thomas"];
document.write(arr + "<br/>");
document.write(arr.slice() + "<br/>");
// 从第一个元素开始截取到 数组结尾
document.write(arr);
</script> 输出结果: George,John,Thomas
John,Thomas
George,John,Thomas
9、sort() 对数组的元素进行排序
对数组的引用。请注意,数组在原数组上进行排序,不生成副本
该方法默认是按照字符编码(ASCII)的顺序进行排序的
例如:
<script type="text/javascript">
var arr = new Array();
arr[] =
arr[] =
arr[] =
arr[] =
arr[] =
arr[] =
document.write(arr + "<br/>");
document.write(arr.sort());
</script>
输出结果: ,,,,,
,,,,,
10、splice() 删除元素,并向数组添加新元素
splice() 方法与 slice() 方法的作用是不同的,splice() 方法会直接对数组进行修改
(1)删除指定范围的数组元素:
<script type="text/javascript">
var arr = new Array(); arr[] = "George";
arr[] = "John"; arr[] = "Thomas"; arr[] = "James"; arr[] = "Adrew"; arr[] = "Martin"; document.write(arr + "<br/>"); arr.splice(, ); // 删除第三个元素以后的三个数组元素(包含第三个元素)12 document.write(arr);13 </script>
输出结果:
George,John,Thomas,James,Adrew,Martin
George,John,Martin
(2)从指定下标开始插入指定元素(元素个数不限):
<script type="text/javascript">
var arr = new Array(); arr[] = "George"; arr[] = "John"; arr[] = "Thomas"; arr[] = "James"; arr[] = "Adrew"; arr[] = "Martin"; document.write(arr + "<br/>"); arr.splice(, , "William","JACK"); // 在第三个元素之前插入"William","JACK"12 document.write(arr);13 </script>
输出结果:
George,John,Thomas,James,Adrew,Martin
George,John,William,JACK,Thomas,James,Adrew,Martin
(3)删除指定范围的数组元素,并用指定元素替换(元素个数不限):
<script type="text/javascript">
var arr = new Array(); arr[] = "George"; arr[] = "John"; arr[] = "Thomas"; arr[] = "James"; arr[] = "Adrew"; arr[] = "Martin"; document.write(arr + "<br/>"); arr.splice(,,"William","JACK"); // 删除第三个元素以后的三个数组元素(包含第三个元素),并用"William","JACK"进行替换12 document.write(arr);13 </script>
输出结果:
George,John,Thomas,James,Adrew,Martin
George,John,William,JACK,Martin
JavaScript数组操作函数的更多相关文章
- JavaScript 数组操作函数--转载+格式整理
JavaScript 数组操作函数(部分)--转载+格式整理 今天看了一篇文章,主要讲的对常用的Js操作函数:push,pop,join,shift,unshift,slice,splice,conc ...
- Javascript数组操作函数总结
(1) shift 删除原数组第一项,并返回删除元素的值:如果数组为空则返回undefined var a = [1,2,3,4,5]; var b = a.shift(); //a:[2,3,4, ...
- JavaScript中常见的数组操作函数及用法
JavaScript中常见的数组操作函数及用法 昨天写了个帖子,汇总了下常见的JavaScript中的字符串操作函数及用法.今天正好有时间,也去把JavaScript中常见的数组操作函数及用法总结一下 ...
- javascript数组操作(创建、元素删除、数组的拷贝)
这篇文章主要介绍了javascript数组操作,包括创建.元素的访问.元素删除.数组的拷贝等操作,还有其它示例,需要的朋友可以参考下 1.数组的创建 复制代码 代码如下: var arrayObj = ...
- RX学习笔记:JavaScript数组操作
RX学习笔记:JavaScript数组操作 2016-07-03 增删元素 unshift() 在数组开关添加元素 array.unshift("value"); array.un ...
- 初探numpy——广播和数组操作函数
numpy广播(Broadcast) 若数组a,b形状相同,即a.shape==b.shape,那么a+b,a*b的结果就是对应数位的运算 import numpy as np a=np.array( ...
- Javascript数组操作
使用JS也算有段时日,然对于数组的使用,总局限于很初级水平,且每每使用总要查下API,或者写个小Demo测试下才算放心,一来二去,浪费不少时间:思虑下,堪能如此继续之?当狠心深学下方是正道. 原文链接 ...
- Javascript数组操作(转)
1.数组的创建 var arrayObj = new Array(); //创建一个数组 var arrayObj = new Array([size]); //创建一个数组并指定长度,注意不是上限, ...
- javascript数组操作汇总
javascript之数组操作 - 不悔的青春 - 博客园 1.数组的创建 var arrayObj = new Array(); //创建一个数组 var arrayObj = new Array( ...
随机推荐
- 利用pandas库中的read_html方法快速抓取网页中常见的表格型数据
本文转载自:https://www.makcyun.top/web_scraping_withpython2.html 需要学习的地方: (1)read_html的用法 作用:快速获取在html中页面 ...
- safari浏览器click事件要点击两次才有响应出现闪烁
闪烁问题 由于在iOS Safari上click事件存在300ms响应延时,所以为touch事件添加样式,会和click事件默认样式叠加而产生闪烁问题. 因为ios safari浏览器中对触摸事件的响 ...
- 09.正则表达式re-2.complie函数
compile 函数用于编译正则表达式,生成一个 Pattern 对象,它的一般使用形式如下: import re # 将正则表达式编译成 Pattern 对象 pattern = re.compil ...
- maven+springMVC+mybatis+easyUI管理用户增删改查
1.项目演示图 2.项目简单介绍 项目分为两个projectdomain和manager.project结构例如以下图所看到的.当中domain是Maven javaproject主要完毕对数据库的操 ...
- VMware workstation虚拟机不能联网解决方法
以备后用. 第一步:先设置VMware的编辑——虚拟网络编辑器,启用VMnet8,NAT模式,如下图所示. 其实就是VMware默认的设置,无须更改,如果不小心改了,点击还原默认设置. 第二步:虚拟机 ...
- C Tricks(十七)—— 对角线元素的屏蔽、二维数组(矩阵)的遍历
1. 对角线元素的屏蔽 使用 if + continue 实现对对角线元素的屏蔽 for u in range(n): for v in range(n): if u == v: continue . ...
- EOJ 2847 路由结点
数学知识 凸N边形的对角线条数为:n(n-3)/2因为每一个交点对应两条对角线,而两条对角线又对应着一个四边形.于是焦点个数就对应四边形的个数.问题转化成由凸n边形的n个顶点取4个顶点可组成多少个四边 ...
- Unsupported major.minor version 52.0 (unable to load class XXX
java项目构建从高版本JDK改为低版本JDK报错.这是再次编译时使用的JDK版本比你原来编译的版本低所导致的. 转自:http://blog.csdn.net/zixiao217 maven项目在服 ...
- .net中的母版页中使用FindControl的使用
前几天,遇到一个字段比较多的用户填写的页面(数据库表中就将近100个字段),怎么讲这些input的标签的值,保存数据库了?(使用的是母版页下面的aspx,不包括前段获取input的值,传给后台) 作为 ...
- SSRS 报表 如何加参数
SSRS 报表 如何加参数 连接上以后出现一个问题 就是给报表加上参数以后报表不断刷新,跟上次那个报表刷新是同样的问题.那么下面我们来解决一下. 1. 这是给报表添加默认参数进入页面后就不断的刷新刷新 ...