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( ...
随机推荐
- python类中属性逗号引发的类型改变
不注意点了个逗号引发了类型改变 [shangbl@newsvn ~]$ cat test.py class AB1: a="a" class AB12: a="a&quo ...
- 洛谷 P3227 BZOJ 3144 [HNOI2013]切糕
题目描述 经过千辛万苦小 A 得到了一块切糕,切糕的形状是长方体,小 A 打算拦腰将切糕切成两半分给小 B.出于美观考虑,小 A 希望切面能尽量光滑且和谐.于是她找到你,希望你能帮她找出最好的切割方案 ...
- 设置Jmeter默认中文页面
下载安装好Jmeter后默认的是英文,对于我这种学渣来说简直就是受到了1000000点攻击. 所以,如何把英文界面换成中文呢? 方法一(从网上看到的) 启动Jmeter找到 options >c ...
- 0804SHOW ENGINE INNODB STATUS
转自http://blog.csdn.net/github_26672553/article/details/52931263 innodb存储引擎在show engine innodb status ...
- 第五节、矩阵分解之LU分解
一.A的LU分解:A=LU 我们之前探讨过矩阵消元,当时我们通过EA=U将A消元得到了U,这一节,我们从另一个角度分析A与U的关系 假设A是非奇异矩阵且消元过程中没有行交换,我们便可以将矩阵消元的EA ...
- jquery-cookie持久化
jQuery.Cookie.js,是一个轻量级的Cookie管理插件 <script src="jQuery.1.8.3.js" type="text/javasc ...
- HDU 4515
刷水完毕,年月日,日日日日日日日日日日日日日日日日日日 #include <stdio.h> ,,,,,,,,,,,,}; ,M = ,D = ; int leap(int y) { == ...
- spring5.0新特性
spring5.0新特性 学习了:http://blog.csdn.net/u012562943/article/details/77449666 https://www.cnblogs.com/xu ...
- HTML5的未来
2014年10月29日,万维网联盟(W3C)宣布,经过差点儿8年的艰辛努力.该标准规范终于终于制定完毕.之所以是8年,由于在1999年HTML4的规范制定以后,W3C对于HTML的发展.貌似就不再那么 ...
- C++设计模式之状态模式(二)
2.智能空调的设计与实现 某软件公司将开发一套智能空调系统: 系统检測到温度处于20---30度之间,则切换到常温状态:温度处于30---45度,则切换到制冷状态: 温度小于20度,则切换到制热状态. ...