js常用增删改查方法/js比较运算符 逻辑运算符 赋值运算符 算术运算符

js数组遍历某个值求和

  getCartCount: function() {
        let that = this;
        util.request(api.bookcarlist,{传值}).then(function(res) {
            if (res.code ==1000) {

                let sum = 0;
                //遍历数组
                res.data.forEach(items => {
                    //取值赋值
                    sum += items.goods_number;
                });
                that.setData({
                    cartGoodsCount: sum
                });
            }
        });
    },

一、增

1、push()

可接收任意数量的参数,把它们逐个添加至数组末尾,并返回修改后数组的长度。例如:

var arr = [];
var len = arr.push(1);
console.log(arr); // [1]
console.log(len); // 1
len = arr.push(2,3);
console.log(arr); // [1,2,3]
console.log(len); // 3

2、unshift()

该方法与push()类似,也可接收任意数量的参数,只不过是将参数逐个添加至数组前端而已,同样返回新数组长度。咱们接着上面的例子:

var len = arr.unshift(0);
console.log(arr); // [0, 1, 2, 3]
console.log(len); // 4
len = arr.unshift(-2,-1);
console.log(arr);  // [-2, -1, 0, 1, 2, 3]
console.log(len);  // 6

3、concat()

该方法与push()方法有点类似,同样是将元素添加至数组末尾,只不过这个数组已经不是原来的那个数组了,而是其副本,所以concat()操作数组后会返回一个新的数组。具体用法如下:

① 不传参数,返回当前数组副本
② 传递一或多个数组,则该方法会将这些数组中的每一项都添加到结果数组中
③ 传递非数组参数,这些参数就会被直接添加到结果数组的末尾

继续接着上面的栗子:

arr1 = arr.concat(4,[5,6]);
console.log(arr);  // [-2, -1, 0, 1, 2, 3]
console.log(arr1);  // [-2, -1, 0, 1, 2, 3, 4, 5, 6]

例子中一目了然,原数组保持不变,新数组后面添加了4、5、6三个元素。

4、splice()

前面的三个方法都具有很大局限性,因为不是添加到数组前就是数组后,而splice()就不一样了,它非常灵活和强大。灵活是因为它可以添加元素到数组的任意位置,强大是因为它除了可以添加元素之外还具有删除和替换元素的功能(这个后面会陆续讲到)。

splice()可以向数组指定位置添加任意数量的元素,需要传入至少3个参数: 起始位置、0(要删除的元素个数)和要添加的元素。

依然接着上面的例子继续:

    var fruits = ["Banana", "Orange", "Apple", "Mango"];
    fruits.splice(2,1);   //从下标为2的删,删除一个元素
      结果是
       ["Banana", "Orange", "Mango"];
arr.splice(3,0,0.2,0.4,0.6,0.8);
console.log(arr); // [-2, -1, 0, 0.2, 0.4, 0.6, 0.8, 1, 2, 3]

可以看出,splice()与push()和unshift()一样是直接在原数组上修改的。

二、删

1、pop()

与push()方法配合使用可以构成后进先出的栈,该方法可从数组末尾删除最后一项并返回该项。

接着上例:

var item = arr.pop();
console.log(item);  // 3
console.log(arr);  // [-2, -1, 0, 0.2, 0.4, 0.6, 0.8, 1, 2]

2、shift()

与push()方法配合使用可以构成先进先出的队列,该方法可删除数组第一项并返回该项。

继续接着上例:

var item = arr.shift();
console.log(item); // -2
console.log(arr); // [-1, 0, 0.2, 0.4, 0.6, 0.8, 1, 2]

3、slice()

定义和用法
slice() 方法以新的数组对象,返回数组中被选中的元素。

slice() 方法选择从给定的 start 参数开始的元素,并在给定的 end 参数处结束,但不包括。

注释:slice() 方法不会改变原始数组。

该方法同concat()一样是返回一个新数组,不会影响原数组,只不过slice()是用来裁剪数组的,返回裁剪下来的数组,具体用法如下:

var fruits = ["Banana", "Orange", "Lemon", "Apple", "Mango"];
var myBest = fruits.slice(-3,-1); // 截取倒数第三个(包含)到倒数第一个(不包含)的两个元素
var myBest = fruits.slice(-3);  // 截取最后三个元素
document.write(fruits.slice(4,10)); // 从第 5 个字符开始截取到第10个字符
var arr2 = arr.slice(2,6); //截取第二个到第六个的元素
console.log(arr); // [-1, 0, 0.2, 0.4, 0.6, 0.8, 1, 2]
console.log(arr2); // [0.2, 0.4, 0.6, 0.8]

4、splice()

好,继续讲这个“万能”的方法。

上面讲到,该方法在添加数组元素的时候需要传入3个以上参数,而其中第2个参数就是用于指定要删除元素的个数的,那时我们传的是数字0。那么,如果单单只需删除元素,我们就只需给splice()传入两个参数,第1个参数用于指定要删除的第一项的位置,第2个参数用于指定要删除元素的个数。

继续上例~~

arr.splice(2,4);
console.log(arr); // [-1, 0, 1, 2]

从索引项为2的位置开始删除4个元素,所以结果为 [-1, 0, 1, 2]。

三、改

这个其实最灵活的方式就是直接使用splice()这个强大的方法了,其实通过以上对该方法的了解,我们大致就能知道使用该方法修改数组元素的基本原理。

原理很简单,就是向指定位置插入任意数量的元素,且同时删除任意数量的元素。

依然继续上例~~

arr.splice(2,1,0.5,1,1.5);
console.log(arr);  // [-1, 0, 0.5, 1, 1.5, 2]
//实例
//移除数组的第三个元素,并在数组第三个位置添加新元素:

var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.splice(2,1,"Lemon","Kiwi");
//fruits 输出结果:

Banana,Orange,Lemon,Kiwi,Mango

四、查

indexOf()和lastIndexOf()

这两个方法都接收两个参数:要查找的项和(可选的)表示查找起点位置的索引。其中,indexOf()从数组的开头(位置0)开始向后查找,lastIndexOf()方法则从数组的末尾开始向前查找。

例如:

var index = arr.indexOf(0);
console.log(index);  // 1
index = arr.indexOf(3,0);
console.log(index);  // -1

当找不到该元素时,返回 -1 ,lastIndexOf()方法同理。

js数据类型 比较运算符 逻辑运算符 赋值运算符 算术运算符

1 数据类型
<script>
2 引用数据类型
object 对象类型
3 number 数字类型
包含所有的数字(整数,浮点数,正数,负数,极大极小数),Infinity(分母为零),NaN(not a number)
4 string 字符串类型
引号包含的任意文本,单双引号都可以

    5 boolean 布尔类型
        包含 true false 
        var bool1 = true //boolean
        var bool1 = false //boolean
        console.log( 3 > 2 ) //boolean
    6 undefined 未定义类型
        未定义类型表示数据类型不确定
        声明一个变量,没有赋值,默认值为undefined,数据类型为undefined
        var x; 
        console.log(x,typeof x); undefined undefined
    7 null 空类型
    null表示的数据类型确定为object
    null用来主动释放对象
    注意 typeof时返回object
        var obj = null;
    console.log(obj,typeof obj); //null object
    8 object 对象类型
    大括号包含的一组值对象由键值对构成,多个键值对用逗号隔开,最后一个键值对不加逗号
    键值对是由键值和键名组成,键名和键值之间用冒号隔开
        var 变量名 = {
            键名:键值,
            键名:键值,
            键名:键值,
            键名:键值,
            键名:键值  
        }
    9 判断数据类型
    typeof 变量名
    10 Javascript拥有动态的数据类型
        var x;
        console.log(x,typeof x);//undefined undefined
        //赋值
        x = 10;
        console.log(x,typeof x);//10 number
        //重新赋值
        x = "哈哈";
        console.log(x,typeof x);//哈哈 string
     */
</script>


<script>
    //创建对象
    var obj = {
        userName: "张三",
        age: 99
    };
    console.log(obj,typeof obj);
</script>

输出展示

2 比较运算符
<script>
/*
1 比较运算符
比较两个值的大小 返回一个布尔值(true 或 false)
> < >= <= == != === !==
== 等于,只判断数值
===全等,绝对等于,即判断数据类型也判断数值
!= == 取反
!== ===取反
console.log(undefined == null);//true 都没有值
console.log(undefined === null);//false 数据类型不同undefined object
console.log(NaN == NaN); //false
console.log(NaN === NaN); //false
console.log(NaN != NaN); //true
console.log(NaN !== NaN); //true
/
</script>
3 逻辑运算符
<script>
/

2 逻辑运算符
连接多个表达式,返回一个布尔值(true 或 false)
&& 逻辑与 并且 所有的表达式都为true,结果才为true,有一个为false结果就为false
|| 逻辑或 或者 所有的表达式都为false,结果才为false,有一个为true结果就为true
! 逻辑非 取反 表达式为true取反就为true,反之亦然
注意: 逻辑与的优先级大于逻辑或
*/
</script>
逻辑运算符演示

<script>
    var a = 10;
    var b = 5;
    var c = 8;
    console.log(a>b&&b<c); //t
    console.log(a>b&&b>c); //f
    console.log(a<b&&b<c); //f
    console.log(a<b||b<c); //t
    console.log(a>b||b<c); //t
    console.log(a>b||b>c); //t
    console.log(a>b||b<c&&a<c); //t
    console.log(a>b||b<c&&a>c); //t
    console.log(a>b&&b<c||a>c); //t
    console.log(a>b&&b>c||a>c); //t
    console.log(!(a>b)); //f
    console.log(!(a<b)); //t
</script>

输出到控制台的结果

4 赋值运算符
<script>
/*
3 赋值运算符
= 等号右边的值赋值给左边
+= x += y x = x + y 下同
-=
*=
/=
%= 要的是余数
*/
</script>
<script>
x = 7;
y = 3;
console.log(x/=y)
</script>

5 算术运算符
<script>
/*
算术运算符
+ - * / %(取余,取模) ++(自增) --(自减)
%(取余,取模) 应用 判断奇偶数、倍数
++ 相当于自己加1 x++ 相当于 x = x + 1
-- 相当于自己加1 x-- 相当于 x = x - 1
+运算碰到字符串,直接进行字符串拼接,返回string类型
- * / %遇到字符串,都转换成number类型进行计算,如果不能转换成数字,则返回NaN,数据类型未number
true转换1 false转换为0
++ --
前++和后++,对于变量自己来说没有区别都是+1
前++ 先赋值 在加1
后++ 先加1 再赋值
/
</script>
<script>
/
var x = 5;//number
var y = 2;//number
comsole.log(x + y);//7
comsole.log(x - y);//3
comsole.log(x * y);//10
comsole.log(x / y);//2.5
comsole.log(x % y);//1 */

    /* var x = '5';//string
    var y = 2;//number
    comsole.log(x + y);//52 字符串拼接 string
    comsole.log(x - y);//3
    comsole.log(x * y);//10
    comsole.log(x / y);//2.5
    comsole.log(x % y);//1   */

    /* var x = '5a';//string
    var y = 2;//number
    comsole.log(x + y);//5a2 字符串拼接 string
    comsole.log(x - y);//NaN
    comsole.log(x * y);//NaN
    comsole.log(x / y);//NaN
    comsole.log(x % y);//NaN */

    /* var x = true; //boolean  转换为1
    var y = false; //boolean  转换为0
    var z = "5"; //string
    var a = 5; //number
    console.log(x + z);//true5 字符串拼接 string
    console.log(y + z);//false5
    console.log(x + y);//1
    console.log(x + a);//6
    console.log(y + a);//5 */

    // 不管前++还上后++对于变量自己来说没有区别,都是+11
   /*  var x = 10;
    x++; //后++ 相当于 x = x + 1;
    console.log(x); //11
    var x = 10;
    ++x; //前++ 相当于 x = x + 1;
    console.log(x); //11 */

    /* var x = 10;
    var y = ++x; 前++ 现执行+1 再赋值
    console.log(X);//11
    console.log(y);//11 */

    /* var x = 10;
    var y = x++; //后++ 先赋值,再执行+1
    console.log(x);//11
    console.log(y);//10 */

    /* var x = 10;
    console.log(++x);//11 x=11
    console.log(x++);//11 x=12
    console.log(x++);//12 x=13
    console.log(++x);//14 x=14
    console.log(x);//14 */

    var x = 10;
    var y = x++ + ++x;
    console.log(x);//12
    console.log(y);//22
</script>
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,904评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,581评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,527评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,463评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,546评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,572评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,582评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,330评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,776评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,087评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,257评论 1 344
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,923评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,571评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,192评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,436评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,145评论 2 366
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,127评论 2 352

推荐阅读更多精彩内容