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. 46.object类型

    主要知识点 1.field分类 2.object field类型的存储 一.field类型分类 1.multivalue field { "tags": [ "tag1& ...

  2. PAT 1075. PAT Judge

    The ranklist of PAT is generated from the status list, which shows the scores of the submittions. Th ...

  3. 3.IDEA+Maven+Spring注解+Servlet+MyBatis

    1.创建项目模块 2. 选择创建的项目类型,maven的web项目 3.输入项目名 4.选择自己配置的本地maven库 5.创建项目 6.查看项目结构 7.配置项目的依赖pom.xml <?xm ...

  4. js获取URL参数的函数

    function GetQueryString(name) { var reg = new RegExp("(^|&)" + name + "=([^&] ...

  5. 暑假集训D14总结

    %dalao 今天dalao继续来讲课~讲的是一个叫kd树的奇怪东西= = 然而啥都没听懂 考试 今天多校联考,日常炸= = 照例打了前两道题的暴力(T1随便hash一下就水过了啊喂),然后开始推T3 ...

  6. hdu 3072 强连通+缩点+最小树形图思想

    #include<stdio.h> #include<string.h> #define N 51000 #define inf 1000000000 struct node ...

  7. Tkinter之Label

    最近要弄弄以前想弄的东东了, 所以图形界面不可少,,TKinter, 就用它了, 简单,满足要求. #coding: utf8 from Tkinter import * def tklabel(ev ...

  8. mongodb--update高级用法

    配合update使用的函数 $set 修改某列的值 $unset 删除某个列 $rename 重命名某个列 $inc 增长某个列 $setOnInsert 当upsert为true时,并且发生了ins ...

  9. java反射意义

    JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法:对于任意一个对象,都能够调用它的任意方法和属性:这种动态获取信息以及动态调用对象方法的功能称为java语言的反射机制. ...

  10. [Python] Create a minimal website in Python using the Flask Microframework

    How to install Flask Use Flask to create a minimal website Build routes in Flask to respond to websi ...