批改状态:合格
老师批语:希望你能坚持到最后
JSON.stringify(data,replacer,space):将js数据转为json
console.log(JSON.stringify(3.14), typeof JSON.stringify(3.14));//字符串必须加""console.log(JSON.stringify("hello"), typeof JSON.stringify("hello"));//布尔值不能加""console.log(JSON.stringify(true), typeof JSON.stringify(true));

//数组console.log(JSON.stringify({ a: 1, b: 2, c: 3 }, ["a", "b"]));//输出{"a":1,"b":2}//Json 数组格式console.log(JSON.stringify({"a":1,"b":2,"c":3}));//输出{"a":1,"b":2,"c":3}//函数console.log(JSON.stringify({ a: 1, b: 2, c: 3 }, (k, v) => {// 将需要过滤掉的数据直接返回undefinedif (v < 2) return undefined;return v;}));//输出{"b":2,"c":3}
console.log(JSON.stringify({ a: 1, b: 2, c: 3 }, null, "****"));//输出{****"a": 1,****"b": 2,****"c": 3}
let obj = JSON.parse(`{"a":1,"b":2,"c":3}`);
obj = JSON.parse(`{"a":1,"b":2,"c":3}`, (k, v) => {// json对象是由内向外解析if (k === "") return v;return v * 2;});console.log(obj);//输出{"a":2,"b":4,"c":6}
<button>ajax-get</button><p></p><script>const btn = document.querySelector("button");btn.onclick = () => {// 1. 创建 xhr 对象:const xhr = new XMLHttpRequest();// 2. 配置 xhr 参数:xhr.open("get", "demo1.php?id=1");// 设置返回的格式为jsonxhr.responseType = "json";// 3. 处理 xhr 响应:xhr.onload = () => {console.log(xhr.response);let user = `${xhr.response.name} ${xhr.response.email} ${xhr.response.password}`;document.querySelector("p").innerHTML = user;};xhr.send(null);};</script>

const form = document.querySelector(".login form");const btn = document.querySelector(".login button");const tips = document.querySelector(".tips");btn.onclick = (ev) => {// 建立xhr对象const xhr = new XMLHttpRequest();// 设置传输格式postxhr.open("post", "demo2.php");//处理 xhr 响应xhr.onload = () => {tips.innerHTML = xhr.response;};//发送xhr数据xhr.send(new FormData(form));};
cors: 跨域资源共享
<button>ajax-get-cors</button><p class="tips"></p><script>// cors: 跨域资源共享const btn = document.querySelector("button");const tips = document.querySelector(".tips");const btn = document.querySelector("button");btn.onclick = ev => {// 1. 创建 xhr 对象:const xhr = new XMLHttpRequest();// 2. 配置 xhr 参数:xhr.open("get", "http://world.io/cors1.php");// 3. 处理 xhr 响应:xhr.onload = () =>(document.querySelector("p").innerHTML = xhr.response);// 4. 发送 xhr 请求:xhr.send(null);};</script>
<button>ajax-post-cors</button><p class="tips"></p><script>// cors: 跨域资源共享const btn = document.querySelector("button");const tips = document.querySelector(".tips");btn.onclick = ev => {// 1. 创建 xhr 对象:const xhr = new XMLHttpRequest();// 2. 配置 xhr 参数:xhr.open("post", "http://world.io/cors2.php");// 3. 处理 xhr 响应:xhr.onload = () => (tips.innerHTML = xhr.response);// 4. 发送 xhr 请求:let formData = new FormData();formData.append("email", "admin@php.cn");formData.append("password", "123456");xhr.send(formData);};</script>//跨域文件头设置 *为全部同意,可以设置单独的域名只允许这个域名header('Access-Control-Allow-Origin: *');

function getUser(data) {console.log(data);let user = data.name + ": " + data.email;document.querySelector("p").innerHTML = user;}
const btn = document.querySelector("button");btn.onclick = () => {// 1. 动态生成一个允许跨域请求的html元素let script = document.createElement("script");// 2. 将跨域请求的url添加到src属性上script.src = "http://world.io/cors3.php?callback=getUser";// 3. 将script挂载到页面中document.body.insertBefore(script, document.body.firstElementChild);};
栈: 后进先出
队: 先进先出
他们是仅允许在一端进行增删的数组
let arr = [];
//输出3,为添加的元素个数console.log(arr.push(1, 2, 3));//从尾部开始删除,每次删除一个元素console.log(arr.pop());

//输出3,为添加的元素个数console.log(arr.unshift(1, 2, 3));//从头部开始删除,每次删除一个元素console.log(arr.shift());

console.log(arr.push(4, 5, 6));console.log(arr.shift());console.log(arr.shift());console.log(arr.shift());

console.log(arr.unshift(4, 5, 6));console.log(arr.pop());console.log(arr.pop());console.log(arr.pop());
arr = ["iphone", "vivo", "huawei"];let res = arr.join("--");console.log(res);//输出 iphone--vivo--huawei//可以把字符串用数组方式输出let str = "china";console.log(str[0], str[1], str[2]);//输出 c h i
console.log("hello".concat(" word"));//输出 hello wordconsole.log([1, 2, 3].concat("hello").concat({ x: 1, y: 2 }));//输出[1, 2, 3, "hello", {…}]//不论内容是什么,都会被合并成数组
arr = [1, 2, 3, 4, 5];console.log(arr.slice(0, 3));//输出[1,2,3]:从索引0位置开始,取3个元素console.log(arr.slice(-4));//输出[2,3,4,5]:从结尾位置开始,取4个元素
arr = [1, 2, 3, 4, 5];console.log(arr.splice(2));//输出[3,4,5]:从索引2的位置开始,后边的都删除console.log([1, 2, 9, 8, 7]);//输出[3,4,5]:从索引2的位置开始,后边的都删除res = arr.splice(2, 2, ...[8, 99]);console.log(arr);//输出[1, 2, 8, 99, 5]:第一个2表示从索引2位置开始,第二个2表示替换几个元素res = arr.splice(1, 0, ...[88, 99]);//第二个数字为0表示不替换,只新增
arr = ["a", "z", "o", "p", "w"];res = arr.sort();console.log(res);//输出["a", "o", "p", "w", "z"]:字母按照顺序排列arr = [1, 99, 89, 7, 64, 57];res = arr.sort();console.log(res);//输出[1, 57, 64, 7, 89, 99] :数字排序只针对第一个数字//解决办法 [1, 7, 57, 64, 89, 99]arr.sort((a, b) => a - b);
arr = [1, 2, 3, 4, 5];arr.forEach(item => console.log(item));//map方法res = arr.map((item) => item * 2);console.log(res);//输出[2,4,6,8,10]
//过滤掉偶数arr = [1, 2, 3, 4, 5];res = arr.filter((item) => item % 2);console.log(res);//过滤掉奇数arr = [1, 2, 3, 4, 5];res = arr.filter((item) => !(item % 2);console.log(res);
arr = [1, 2, 3, 4, 5];res = arr.reduce((prev, curr) => prev + curr);console.log(res);//输出15:1+2+3+4+5res = arr.reduce((prev, curr) => prev + curr,1000);//输出1015,第二个值为默认开始值
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号