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

JavaScript019

js常用增删改查方法js比较运算符 逻辑运算符 赋值运算符 算术运算符,第1张

js数组遍历某个值求和

一、增

1、push()

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

2、unshift()

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

3、concat()

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

① 不传参数,返回当前数组副本

② 传递一或多个数组,则该方法会将这些数组中的每一项都添加到结果数组中

③ 传递非数组参数,这些参数就会被直接添加到结果数组的末尾

继续接着上面的栗子:

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

4、splice()

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

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

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

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

二、删

1、pop()

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

接着上例:

2、shift()

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

继续接着上例:

3、slice()

定义和用法

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

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

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

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

4、splice()

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

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

继续上例~~

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

三、改

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

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

依然继续上例~~

四、查

indexOf()和lastIndexOf()

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

例如:

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

1 数据类型

<script>

2 引用数据类型

object 对象类型

3 number 数字类型

包含所有的数字(整数,浮点数,正数,负数,极大极小数),Infinity(分母为零),NaN(not a number)

4 string 字符串类型

引号包含的任意文本,单双引号都可以

输出展示

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>

逻辑运算符演示

输出到控制台的结果

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 */

总结下来就是dom节点的读/写、添加/删除,请看下面的例子。

<!DOCTYPE html>

<html xmlns="

<head>

<meta http-equiv="Content-Type" content="text/htmlcharset=utf-8"/>

<title></title>

<script type="text/javascript">

//定义变量,保存选中的标签

var selectLi

//定义变量,保存修改了的标签

var editedLi=false

window.onload=function()

{

//新增li标签到末尾

document.getElementById("insertEnd").onclick = insertEndclick

//新增li标签到指定位置

var liObj=document.getElementsByTagName("li")

for(var i=0i<liObj.lengthi++)

{

liObj[i].onclick = liChoose

}

document.getElementById("insert").onclick = insertThere

//删除指定标签

document.getElementById("delete").onclick = deleteli

//修改指定标签内容

document.getElementById("edit").onclick = editLi

//将选中的该标签变为文本框进行内容修改

document.getElementById("edit2").onclick = editLi2

//将文本框中的内容保存

document.getElementById("save").onclick = saveLi

}

//新增li标签到末尾

function insertEndclick()

{

var result = prompt("需要插入的li标签文本:", "小黑")

if (result)

{

var newli = document.createElement("li")

newli.innerHTML = result

newli.onclick = liChoose

document.getElementById("ulList").appendChild(newli)

}

}

//新增li标签到指定位置

function insertThere()

{

if (selectLi)

{

var result = prompt("需要插入的li标签文本:", "小黑")

if (result) {

var newli = document.createElement("li")

newli.innerHTML = result

//需要给新增的li标签设置点击事件

newli.onclick = liChoose

document.getElementById("ulList").insertBefore(newli, selectLi)

}

}

else

{

alert("请先选择要插入的位置")

}

}

//高亮选中的标签

function liChoose()

{

var ul = document.getElementsByTagName("li")

for (var i = 0i <ul.lengthi++)

{

ul[i].style.backgroundColor = "white"

}

this.style.backgroundColor = "yellow"

selectLi = this

}

//删除指定标签

function deleteli()

{

if (selectLi)

{

selectLi.parentElement.removeChild(selectLi)

}

else

{

alert("请先选中要删除的标签")

}

}

//修改指定标签

function editLi()

{

if(selectLi)

{

var result = prompt("输入修改内容", "大白")

if(result)

{

selectLi.innerHTML = result

}

}

else

{

alert("请选择要修改的标签")

}

}

//将选中的该标签变为文本框进行内容修改

function editLi2()

{

if(selectLi)

{

//创建一个文本框

var newli = document.createElement("input")

newli.type = "text"

//将文本框内容设置为li标签的文本值

newli.value = selectLi.innerHTML

//将文本框添加到li标签内部

selectLi.removeChild(selectLi.childNodes[0])

selectLi.appendChild(newli)

editedLi = true

}

}

//将文本框中的内容保存

function saveLi()

{

if (editedLi)

{

var editValue = selectLi.childNodes[0].value

selectLi.innerHTML = editValue

}

else

{

alert("没有标签在编辑状态")

}

}

</script>

</head>

<body>

<div>

<input type="button" id="insertEnd" value="新增到末尾" />

<input type="button" id="insert" value="新增到指定位置" />

<input type="button" id="delete" value="删除" />

<input type="button" id="edit" value="修改" />

<input type="button" id="edit2" value="将选中标签变为文本标签进行修改" />

<input type="button" id="save" value="保存" />

</div>

<ul id="ulList">

<li>小猫</li>

<li>小鱼</li>

<li>小狗</li>

<li>大象</li>

<li>树懒</li>

</ul>

</body>

</html>

直接给个例子吧

包含两个文件(index.jsp  和  index.js)

<%@ page language="java" contentType="text/html charset=UTF-8"

pageEncoding="UTF-8"%>

    </head>

    <body onload="loadUserDatas()">

    <div class="container">

    <table class="table" id="table">

       <caption><h2>迈睿练习一</h2></caption>

       <caption>

               <button type="button" class="btn btn-info" id="user_add" data-toggle="modal"

       data-target="#myModal" onclick="optionUserData(this)">新增</button>

               <button type="button" class="btn btn-info" id="user_delete" onclick="optionUserData(this)">删除</button>

               <button type="button" class="btn btn-info" id="user_edit"  data-toggle="modal"

       data-target="#myModal"  onclick="optionUserData(this)">编辑</button>

               <button type="button" class="btn btn-info" id="user_find" onclick="optionUserData(this)">查询</button>

               <input type="text" id="s_code" placeholder="按工号查询" style="width: 80px">

               <input type="text" id="s_userName" placeholder="按姓名查询" style="width: 80px">

               <input type="text" id="s_all" placeholder="全文搜索" style="width: 80px">

       </caption>

       <thead>

          <tr>

               <th>序号</th>

             <th>工号</th>

             <th>姓名</th>

             <th>性别</th>

             <th>密码</th>

             <th>年龄</th>

             <th>出生日期</th>

          </tr>

       </thead>

       <tbody id="tbody">

       </tbody>

    </table>

 

    <!-- 模态框(Modal) -->

    <div class="modal hide" id="myModal"  role="dialog" >

       <div class="modal-dialog">

          <div class="modal-content">

             <div class="modal-header">

                <button type="button" class="close" data-dismiss="modal" aria-hidden="true"> 

                      &times

                </button>

                <h4 class="modal-title" id="myModalLabel">

                       新增用户

                </h4>

             </div>

             <div class="modal-body" id="modal-body">

                <label for="name">工号:</label>

                  <input type="text" class="form-control" id="m_code" placeholder="请输入工号">

                  <label for="name">姓名:</label>

                  <input type="text" class="form-control" id="m_userName" placeholder="请输入姓名">

                  <label for="name">性别:</label>

                  <input type="text" class="form-control" id="m_sex" placeholder="请输入性别">

                  <label for="name">密码:</label>

                  <input type="text" class="form-control" id="m_passWord" placeholder="请输入密码">

                 <label for="name">年龄:</label>

                  <input type="text" class="form-control" id="m_age" placeholder="请输入年龄">

                  <label for="name">出生日期:</label>

                  <input type="text" class="form-control" id="m_birthday" placeholder="请输入出生日期">

             </div>

             <div class="modal-footer">

                <button type="button" class="btn btn-default"

                   data-dismiss="modal">保存

                </button>

                <button type="button" class="btn btn-primary">提交更改</button>

             </div>

          </div><!-- /.modal-content -->

    </div><!-- /.modal -->

    </div>

 

    <script type="text/javascript" src="resource/jquery/jquery.js"></script>

    <script type="text/javascript" src="resource/bootstrap/js/bootstrap.min.js"></script>

    <script type="text/javascript" src="index.js"></script>

    </body>

    </html>

    复制代码

    复制代码

    //存放所有用户

    var users = users || {}

    //操作类型

    var operateType = ""

    //存放搜索对象

    var searchUsers = searchUsers || {}

    //用户构造方法

    var User = {

            Create:function(code,userName,sex,passWord,age,birthday){

                this.code = code

                this.userName = userName

                this.sex = sex

                this.passWord = passWord

                this.age = age

                this.birthday = birthday

            },

            //添加用户

            addUserData:function(){

                if(this.code != ""){

                    users[this.code] = this

                }

            },

            //删除用户

            deleteUserData:function (){

                for(var i in users){

                    if(this.code == users[i].code){

                        delete users[i]

                    }

                }

            },

            //编辑用户

            editUserData:function(){

                for(var i in users){

                    if(this.code == users[i].code){

                        users[i].userName = this.userName

                        users[i].sex = this.sex

                        users[i].passWord = this.passWord

                        users[i].birthday = this.birthday

                        users[i].age = this.age

                    }

                }

            },

            //查找用户

            findUserData:function(data){

 

                for(var i in users){

                    if(data.code.indexOf(users[i].code) >= 0 || 

                            data.userName.indexOf(users[i].userName) >= 0){

                        searchUsers[users[i].code] = users[i]

                        refreshDatas(searchUsers)

                    }

                }

            }

    }

 

    function New(aClass,aParams){

        function new_(){

            aClass.Create.apply(this,aParams)

        }

        new_.prototype = aClass

        return new new_()

    }

 

    //bootstrap模态框事件

    $('#myModal').on('hide.bs.modal', function () {

        // 执行一些动作...

        var inputElements = this.getElementsByTagName("input")

        var userArr = []

        for(var i=0i<inputElements.lengthi++){

            userArr[i] = inputElements[i].value

        }

        var user = New(User,userArr)

        //添加操作

        if(operateType == "add"){

            user.addUserData()

            refreshDatas(users)

        //编辑操作

        }else if(operateType == "edit"){

            user.editUserData()

            refreshDatas(users)

        }

    })

 

    /**

     * 首次加载页面执行方法

     */

    function loadUserDatas(){

        var userArray = initUserDatas()

        addRowData(userArray)

        refreshDatas(users)

 

    }

    /**

     * 初始化用户数据

     */

    function initUserDatas(){

        var initUser1 = New(User,["1001","小兰","女","1234","13","1991-1-1"])

        var initUser2 = New(User,["1002","小毅","男","1234","13","1991-1-1"])

        var initUser3 = New(User,["1003","兰花","女","1234","13","1991-1-1"])

        var initUser4 = New(User,["1004","兰儿","女","1234","13","1991-1-1"])

        users[initUser1.code] = initUser1

        users[initUser2.code] = initUser2

        users[initUser3.code] = initUser3

        users[initUser4.code] = initUser4

        return users

    }

 

    /**

     * 往表格添加一行html数据

     */

    function addRowData(datas){

        var tbodyElement = document.getElementById("tbody")

        var html = ""

        var color = "warning"

        var flag = true

        for(var i in datas){

            if(flag){

                color = "info"

            }else{

                color = "warning"

            }

            html = html +  "<tr class='"+ color +"'><td style='width:30px'><input type='checkbox'></td><td id='code'>"

                    + datas[i].code +"</td><td id='userName'>"

                    + datas[i].userName +"</td><td id='sex'>"

                    + datas[i].sex +"</td><td id='passWord'>"

                    + datas[i].passWord +"</td><td id='age'>"

                    + datas[i].age +"</td><td id='birthday'>"

                    + datas[i].birthday +"</td>"

                    +"</tr>"

 

            flag = !flag//颜色转换

        }

        tbodyElement.innerHTML = html

    }

    /**

     * 刷新用户数据

     */

    function refreshDatas(datas){

        addRowData(datas)

    }

 

    /**

     * 收集一行数据

     */

    function collectionRowData(param){

        var tdElement = param.getElementsByTagName("td")

        var userArr = []

        for(var i=1i<tdElement.lengthi++){

            var temp =  tdElement[i].textContent

            userArr[i-1] = temp

        }

        var user = New(User,userArr)

        return user

    }

    /**

     * 用户操作方法

     */

    function optionUserData(param){

        //获得操作类别

        var optionType = param.getAttribute("id")

        if(optionType == "user_add"){

            operateType = "add"

        }else if(optionType == "user_delete"){

            var checkRowData = isCheckedData()

            var user = collectionRowData(checkRowData)

            user.deleteUserData()

            refreshDatas(users)

        }else if(optionType == "user_edit"){

            operateType = "edit"

            var checkRowData = isCheckedData()

            var user = collectionRowData(checkRowData)

            var modal_body = document.getElementById("modal-body")

            var inputElements=  modal_body.getElementsByTagName("input")

            for(var i=0i<inputElements.lengthi++){

                var temp = inputElements[i].id.substring(2,inputElements[i].id.length)

                inputElements[i].value = user[temp]

            }

        }else if(optionType == "user_find"){

            var s_code =  document.getElementById("s_code").value

            var s_userName =  document.getElementById("s_userName").value

            var s_all=  document.getElementById("s_all").value

            //搜索数据

            var s_data = s_data || {}

            s_data.code = s_code

            s_data.userName = s_userName

            s_data.all = s_all

            var user = New(User,[])

            user.findUserData(s_data)

        }else{

 

        }

    }

 

    /**

     * 是否选中数据,返回选中数据的行

     */

    function isCheckedData(){

        var tbodyElement =document.getElementById("tbody")

        var trElements = tbodyElement.getElementsByTagName("tr")

        var flag = false

        for(var i=0i<trElements.lengthi++){

            var inputElement = trElements[i].getElementsByTagName("input")[0]

            if(inputElement.checked){

                flag = true

                return trElements[i]

            }

        }

        if(!flag){

            alert("请选择一条记录!")

            $('#myModal').unbind("on")

        }

    }