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( ...
随机推荐
- 【Codeforces Round #519 by Botan Investments C】 Smallest Word
[链接] 我是链接,点我呀:) [题意] [题解] 模拟了一两下.. 然后发现. 对于每一个前缀. 组成的新的最小字典序的字符串 要么是s[i]+reverse(前i-1个字符经过操作形成的最大字典序 ...
- redhat超级用户密码破解
1. 开机在出现grub画面,按e键 2. 用上下键选中第二项(类似于kernel /boot/vmlinuz-2.4.18-14 ro root=LABEL=/) 然后按e键编辑 3. 空格sing ...
- G - Balanced Lineup
G - Balanced Lineup POJ - 3264 思路:水题,线段树的基本操作即可. #include<cstdio> #include<cstring> #inc ...
- C#版winform实现UrlEncode
在Asp.net中可以使用Server.HTMLEncode和Server.URLEncode 将文本或URL的特殊字符编码,但在控制台或Winform程序中没有办法使用到这些方法, 解决办法:右击项 ...
- sendfile学习
参考 https://zhuanlan.zhihu.com/p/20768200?refer=auxten 而成本很多时候的体现就是对计算资源的消耗,其中最重要的一个资源就是CPU资源. Sendfi ...
- 从OTF字体文件里查找字体名称
for in ? 使用神器vim就好了. . . vim ./AKZIDENZGROTESK-COND.OTF
- Hibernate 自定义方言
自定义一个方言类——Hibernate Dialect 标签: hibernatesqlserverjdbcmysql数据库java 2012-07-04 18:46 2847人阅读 评论(1) 收藏 ...
- POJ 3126 Prime Path SPFA
http://poj.org/problem? id=3126 题目大意: 给你两个四位的素数s和t,要求每次改变一个数字.使得改变后的数字也为素数,求s变化到t的最少变化次数. 思路: 首先求出全部 ...
- oc3--类方法1
// // main.m // 第一个OC类-方法 #import <Foundation/Foundation.h> /* C语言中函数分为声明和实现,OC中定义类, 就是在写类的声明和 ...
- DNS通道检测 国外学术界研究情况——研究方法:基于流量,使用机器学习分类算法居多,也有使用聚类算法的;此外使用域名zif low也有
http://www.ijrter.com/papers/volume-2/issue-4/dns-tunneling-detection.pdf <DNS Tunneling Detectio ...