字符串
String 用來處理文本(字符串)
字符串的創(chuàng)建
1. 字面量的創(chuàng)建方式
// 字面量的聲明
var str = "sfssfsf"; // 用""或者是''括起來的字段就叫字符串
2.通過new的方式 (構(gòu)造函數(shù)創(chuàng)建)
// 構(gòu)造函數(shù)創(chuàng)建
var str = new String('hello'); // 新創(chuàng)建一個(gè)對象霎冯,并且把存放的值賦予給對象
3. 直接使用String()創(chuàng)建
// 直接使用String() 來去創(chuàng)建
var str = String('hello'); // 直接辦存放的值轉(zhuǎn)換為最原始的字符串并返回值
屬性:length
字符串的length是其字符串中所有字符的長度
獲取字符串的長度
var str = 'www.baidu.com';
console.log(str.length)
方法:
1.charAt()
在字符串中獲取某個(gè)位置的字符
// charAt()
var s = str.charAt(10);
console.log(s);
2. charCodeAt()
獲取字符串中某個(gè)位置的字符對應(yīng)的Unicode編碼
3.indexOf()
// 對字符串進(jìn)行檢索
// 返回回來的值是檢索字符在字符串中的下標(biāo)铃拇,沒有檢索到返回值是-1
// 檢索時(shí)時(shí)把檢索的字符當(dāng)做是一個(gè)整體來處理
var str = 'www.baidu.com';
var ind = str.indexOf('comn');
console.log(ind);
4.match()
找到匹配正則表達(dá)式的集合
var str = '蘇久福今年25,蘇久福是男生沈撞,蘇久福身高190';
var reg = /蘇久福/g;
var arr = str.match(reg);
console.log(arr);
5.replace()
替換匹配正則表達(dá)式的字符
var str = '蘇久福今年25慷荔,蘇久福是男生,蘇久福身高190';
var reg = /蘇久福/g;
var newStr = str.replace(reg,'王瑞');
console.log(newStr);
6.slice()
// 截取字符串,可以傳入兩個(gè)參數(shù)关串,一個(gè)是startSlice,一個(gè)是endSlice
// 如果只傳入一個(gè)參數(shù)拧廊,那么就會默認(rèn)從參數(shù)對應(yīng)的下標(biāo)開始截取一直到結(jié)束
var str = '蘇久福今年25,蘇久福是男生晋修,蘇久福身高190';
var ss = str.slice(0,3); // [start,end)
console.log(ss);
7.split()
將字符串分割為數(shù)組,通過制定的字符來分割
var str = '蘇久福今年25吧碾,蘇久福是男生,蘇久福身高190';
var arr = str.split('墓卦,');
console.log(arr);
8. substr() substring()
提取指定位置在字符串中的字符
// substr() substring()
// 這兩個(gè)方法如果只傳入一個(gè)參數(shù)倦春,他們結(jié)果是一致的
// substr 第二個(gè)參數(shù)代表從第一個(gè)參數(shù)位置開始截取的字符長度
// substring 第二個(gè)參數(shù)也是提取字符的下標(biāo),從小的開始提取到大的下標(biāo)位置
var str = 'www.baidu.com';
var newstr = str.substr(5,1);
console.log(newstr);
var newstr1 = str.substring(5,0); // [5,10)
console.log(newstr1);
console.log(newstr == newstr1); // true
9. toUpperCase() toLowerCase()
toUpperCase() 將字符轉(zhuǎn)換為大寫
toLowerCase() 將字符轉(zhuǎn)換為小寫
// toUpperCase()
var str = 'www.baidu.com';
var newstr = str.toUpperCase();
console.log(newstr);
數(shù)組
Array 用于單個(gè)變量存儲多個(gè)值
var arr = [1,2,3,4,5];
找值通過下標(biāo)去尋找
創(chuàng)建
1. 字面量
var arr = []; // 字面量創(chuàng)建
2. new
var arr = new Array(); // 返回一個(gè)空數(shù)組
var arr1 = new Array(2); // 返回一個(gè)規(guī)定了size(元素個(gè)數(shù))的數(shù)組
var arr2 = new Array(1,3,5,10,9); // 返回了一個(gè)定義了初始值的數(shù)組
console.log(arr,arr1,arr2);
屬性:
length 返回?cái)?shù)組的長度/返回?cái)?shù)組元素的總個(gè)數(shù)
方法:
1. concat()
將多個(gè)數(shù)組合并并返回合并后的數(shù)組
var arr1 = [1,2,3];
var arr2 = [4,5,6];
var arr3 = [7,8,9];
var arr = arr1.concat(arr2,arr3);
console.log(arr);
2.push()
將要添加的元素作為數(shù)組最后一個(gè)添加到數(shù)組中
var arr = [];
arr.push(1);
arr.push(3);
console.log(arr);
3.pop()
刪除最后一個(gè)元素并返回
// push pop
var a = arr.pop()
console.log(a);
console.log(arr);
4. unshift()
將要添加的元素作為數(shù)組的第一個(gè)元素添加到數(shù)組中
5. shift()
刪除數(shù)組的第一個(gè)元素并返回
6.reverse()
將數(shù)組元素反序來排列
// reverse
var arr = [1,2,3,4,5,6,7,8,9];
var newArr = arr.reverse()
console.log(newArr);
7.slice()
在已有的數(shù)組中返回制定的元素
// slice
var arr = [1,2,3,4,5,6,7,8,9];
var newArr = arr.slice(5,7); // [5,7)
console.log(newArr);
8.sort()
對數(shù)組進(jìn)行排序
// sort
var arr = [12,2,34,34,13,1000,24];
var arr1 = arr.sort(function(b,a){
return b-a; // 函數(shù)中的第一個(gè)參數(shù) - 函數(shù)中的第二個(gè)參數(shù) 代表正序排列(從小到大)
// 函數(shù)中的第二個(gè)參數(shù) - 函數(shù)中的第一個(gè)參數(shù) 代表反序排列(從大到新浼簟)
})
console.log(arr1);
9.splice()
刪除元素并向數(shù)組中添加新元素
// splice
var arr = ['sss','aaa','bbb'];
var arr1 = arr.splice(1,1,'ccc'); // 返回刪除的元素
// splice 第一個(gè)參數(shù)刪除的開始下標(biāo) 睁本,第二個(gè)參數(shù)代表刪除元素的個(gè)數(shù) , 第三個(gè)參數(shù) 代表要想數(shù)組中添加的新元素、位置為刪除元素在原來數(shù)組中的位置
console.log(arr,arr1);
10. join() toString()
將數(shù)組轉(zhuǎn)換為字符串
// join
var arr = ['hello','world','sujiufu'];
var str = arr.join("====");
// 通過制定的字符將數(shù)組中所有的元素鏈接成一個(gè)字符串返回
console.log(str);
// toString
var str = arr.toString();
// 把所有的元素直接轉(zhuǎn)換為字符串返回忠怖,
并且數(shù)組中元素分隔符也加到了字符串中
console.log(str);
數(shù)據(jù)傳輸格式
JSON
JSON ?
JSON 指Javascript對象表示法呢堰, JavaScript Object Notation
JSON 是輕量級的文本數(shù)據(jù)傳輸格式
JSON 獨(dú)立于語言
JSON使用了javascript語法來描述數(shù)據(jù)對象,但是JSON仍舊獨(dú)立于語言和平臺,JSON解析器和JSON庫支持許多不同的編程語言凡泣。
JSON 具有自我描述性枉疼,更容易的去理解。
為什么要使用JSON鞋拟?
JSON對于我們應(yīng)用來說骂维,JSON比XML更容易的去使用
JSON語法?怎么去書寫贺纲?
JSON 主要是以鍵值對的形式存在
JSON的值可以接收哪幾種類型航闺?
String
Number
Boolean
Array
Object
Null
// 復(fù)雜類型
Array
Object
JSON中Array?
數(shù)組不止是接受簡單的數(shù)據(jù),還可以接受對象作為元素
JSON中Object?
對象里也可以接受對象作為元素,但注意的是需要以鍵值對的方式存在
怎么使用JSON潦刃?
// datasrc["鍵的名字"] // [] 這里面可以接收變量
var name = "ObjectType";
var obj = datasrc[name];
console.log(obj["option"]);
// datasrc.ObjectType // 不能接受變量
var name = "ObjectType";
var obj = datasrc.ObjectType;
console.log(obj["option"]);
js方式去引入的
JSON文件?
.json 擴(kuò)展名
不能使用單引號侮措,必須得使用雙引號,
每一個(gè)鍵值對之間必須的使用,隔開
JSON兩個(gè)重要的方法?
JSON 轉(zhuǎn)換為字符串的方法
JSON.stringify(json);
字符串轉(zhuǎn)換為JSON
JSON.parse(str);
注意:字符串轉(zhuǎn)換為JSON福铅,那么字符串必須是json嚴(yán)格格式的字符串
XML
和HTML很像很像
XML 被設(shè)計(jì)用來傳輸和存儲數(shù)據(jù)的
XML 可擴(kuò)展標(biāo)記語言 (EXtensible Markup Language)
XML 宗旨是傳輸數(shù)據(jù) HTML 是用來顯示數(shù)據(jù)
XML 中可以自由的定義標(biāo)簽
XML 也具有自我描述性
XML文件?
標(biāo)志 <?xml version="1.0" encoding="utf-8"?>
標(biāo)簽一定是閉合雙標(biāo)簽
<root> </root>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<form>
<input type="text" id="username" />
<input type="password" id="password" />
<button id="login">登錄</button>
<button id="regist">注冊</button>
</form>
<script>
// 后臺
var database = {}; // database 是數(shù)據(jù)庫
database.users = []; // 創(chuàng)建一個(gè)表
database.users.push({ // 向表中插入一條數(shù)據(jù)
"id":1,
"username":"admin",
"password":"123456",
"type":"admin"
})
// 注冊的registFun
function registFun(option){ // 注冊接受數(shù)據(jù)
var flag = true;
database.users.forEach(function(e,i){//傳一個(gè)函數(shù) e代表每一個(gè)元素i每個(gè)元素的索引值
if(e.username == option.name){
flag = false;
}
})
if(flag){
var lenOld = database.users.length;
database.users.push({ // 注冊
"id":database.users.length+1,
"username":option.name,
"password":option.password,
"type":"user"
})
var lenNew = database.users.length;
if(lenNew - lenOld == 1){
return '{"ok":true,"mes":"注冊成功"}'; // 后臺給前臺返回一個(gè)字符串
}else{
return '{"ok":false,"mes":"注冊失敗"}';
}
}else{
return '{"ok":false,"mes":"用戶名存在"}';
}
}
// 登錄的loginFun
function loginFun(str){ /// op 就是前臺發(fā)送過來的數(shù)據(jù)
// 查詢用戶名是否存在
var obj = null; // 用戶 默認(rèn)用戶是null
database.users.forEach(function(e){
if(e.username == op.name){
obj = e;
}
})
if(obj != null){
if(obj.password == op.password){
return '{"ok":true,"mes":"登陸成功"}';
}else{
return '{"ok":false,"mes":"密碼錯(cuò)誤"}';
}
}else{
return '{"ok":false,"mes":"用戶不存在"}';
}
}
// 前臺
var regist = document.getElementById('regist');
var login = document.getElementById('login');
var username = document.getElementById('username');
var password = document.getElementById('password');
// 注冊
regist.onclick = function(){ // 注冊完成
var user = username.value;
var pass = password.value;
if(user !== "" && user.length>=3 && pass != "" && pass.length>=6){
var result = registFun({ // 后臺發(fā)送數(shù)據(jù) 并接受返回的消息
"name":user,
"password":pass
});
var json = JSON.parse(result);
if(json.ok){
alert(json.mes);
}else{
alert(json.mes);
}
}
return false;
}
// 登錄
login.onclick = function(){
var user = username.value;
var pass = password.value;
if(user !== "" && user.length>=3 && pass != "" && pass.length>=6){
// 往后臺發(fā)送請求
var result = loginFun({ // {} 向后臺發(fā)送的數(shù)據(jù)
"name":user,
"password":pass
});
var json = JSON.parse(result);
if(json.ok){
alert(json.mes);
}else{
alert(json.mes);
}
}
return false;
}
/*
* 1.前臺獲取用戶輸入的用戶名和密碼
* 2.驗(yàn)證用戶名和密碼的格式是否正確
* 3.開始往后臺發(fā)送數(shù)據(jù)
*
* 4.后臺接受數(shù)據(jù)萝毛,并且需要對數(shù)據(jù)做相應(yīng)的處理 class User{}
* // 'username=admin&password=123456'
* // {username:admin,password:123456}
* // '{"username":"admin","password":123456}'
* 5.處理數(shù)據(jù),拿到相應(yīng)的參數(shù)
* 6. login -> 登錄功能 public void login(username,password){}
* regist -> 注冊功能 public void regist(username,password){}
*
* 7. 程序處理完以后返回相應(yīng)的結(jié)果 // 重定向 登陸成功
* // 重載 登陸失敗
*
* // 需要向前臺發(fā)送數(shù)據(jù)
*
* 7.程序處理完返回相應(yīng)的結(jié)果并發(fā)送給前臺
*
* 8.接受后臺發(fā)送回來的消息 // '{"ok":true,"mes":"登錄成功"}'
*
* 9.處理發(fā)送回來的消息 // 登錄成功 跳轉(zhuǎn)頁面 登錄失敗 顯示錯(cuò)信息
*
*
*
*
*
*
* */
</script>
</body>
</html>