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数组操作函数的更多相关文章

  1. JavaScript 数组操作函数--转载+格式整理

    JavaScript 数组操作函数(部分)--转载+格式整理 今天看了一篇文章,主要讲的对常用的Js操作函数:push,pop,join,shift,unshift,slice,splice,conc ...

  2. Javascript数组操作函数总结

    (1) shift  删除原数组第一项,并返回删除元素的值:如果数组为空则返回undefined var a = [1,2,3,4,5]; var b = a.shift(); //a:[2,3,4, ...

  3. JavaScript中常见的数组操作函数及用法

    JavaScript中常见的数组操作函数及用法 昨天写了个帖子,汇总了下常见的JavaScript中的字符串操作函数及用法.今天正好有时间,也去把JavaScript中常见的数组操作函数及用法总结一下 ...

  4. javascript数组操作(创建、元素删除、数组的拷贝)

    这篇文章主要介绍了javascript数组操作,包括创建.元素的访问.元素删除.数组的拷贝等操作,还有其它示例,需要的朋友可以参考下 1.数组的创建 复制代码 代码如下: var arrayObj = ...

  5. RX学习笔记:JavaScript数组操作

    RX学习笔记:JavaScript数组操作 2016-07-03 增删元素 unshift() 在数组开关添加元素 array.unshift("value"); array.un ...

  6. 初探numpy——广播和数组操作函数

    numpy广播(Broadcast) 若数组a,b形状相同,即a.shape==b.shape,那么a+b,a*b的结果就是对应数位的运算 import numpy as np a=np.array( ...

  7. Javascript数组操作

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

  8. Javascript数组操作(转)

    1.数组的创建 var arrayObj = new Array(); //创建一个数组 var arrayObj = new Array([size]); //创建一个数组并指定长度,注意不是上限, ...

  9. javascript数组操作汇总

    javascript之数组操作 - 不悔的青春 - 博客园 1.数组的创建 var arrayObj = new Array(); //创建一个数组 var arrayObj = new Array( ...

随机推荐

  1. [luogu4251 SCOI2015] 小凸玩矩阵 (二分图最大匹配)

    传送门 Description Input Output 输出包含一行,为选出的 n 个数中第 k 大数的最小值. Sample Input 输入样例1: 2 3 1 1 2 4 2 4 1 输入样例 ...

  2. 20190218-学习python使用shelve遇到raise error, "db type could not be determined"

    照书上敲代码,运行了提示raise error, "db type could not be determined",现场如下: ubuntu-vm:~/code/massageb ...

  3. POJ 1265

    主要利用PICK定理与边点数上的GCD的关系求解. 三角形一条边上的所有整数点(包括顶点)可以首先将这条边移到(0, 0)->(x, y).这时,(x/gcd(x, y), y/gcd(x, y ...

  4. 一个表空间使用率查询sql的优化

    话不多说,直接上运行计划: SQL> set lines 500; SQL> set pagesize 9999; SQL> set long 9999; SQL> selec ...

  5. Database Design for Sexbale Forum

    Mars March 17, 2015

  6. 【iOS开发-80】Quartz2D画图简单介绍:直线/圆形/椭圆/方形以及上下文栈管理CGContextSaveGState/CGContextRestoreGState

    watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvd2Vpc3ViYW8=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA ...

  7. 车牌识别(end-to-end-for-chinese-plate-recognition)项目搭建基于Mxnet(Python 3.5)

    最近看到geihub上有个车牌识别的项目,感觉很有意思,从上面fork了一下弄到本地自己跑了下.在安装过程中遇到了一些问题,记录如下. 项目github连接:https://github.com/sz ...

  8. bzoj4240: 有趣的家庭菜园(树状数组+贪心思想)

    4240: 有趣的家庭菜园 题目:传送门 题解: 好题!%%% 一开始不知道在想什么鬼,感觉满足二分性?感觉可以维护一个先单调增再单调减的序列? 然后开始一顿瞎搞...一WA 看一波路牌...树状数组 ...

  9. Build website project by roslyn through devenv.com

    1.fetch the source code2.compile controls project3.copy files under bin folder of controls to bin fo ...

  10. 08.HttpUrlconnection方式调用

    package com.rl.client; import java.io.BufferedInputStream; import java.io.BufferedReader; import jav ...