01-隨機(jī)數(shù)并去重排序
解析:數(shù)組去重方法:indexOf---如果得到-1就是不存在拥刻,如果不是-1就是存在币砂,inclued---存在就返回true孔祸,不存在就返回false
set: 以鍵值的形式返回攒发,沒有鍵有滑,只有值,類似數(shù)組的形式返回
還可以借助對象鍵唯一的特性實現(xiàn)數(shù)組去重
<script>
? ? //需求:隨機(jī)選取10-100之間的10個數(shù)字壹士,存入一個數(shù)組,按從小到大排序,并去重
? ? // 獲取隨機(jī)數(shù)組:
? ? function getRandom(min, max, total) {
? ? ? ? ? ? let arr = [];
? ? ? ? ? ? for (let i = 0; i < total; i++) {
? ? ? ? ? ? ? ? arr.push(Math.floor(Math.random() * (max - min + 1) + min));
? ? ? ? ? ? }
? ? ? ? ? ? return arr;
? ? ? ? }
? ? ? ? let randomArr = getRandom(10, 100, 10);
? ? ? ? console.log(randomArr);
// 排序:
? ? ? ? let newArr = randomArr.sort((a, b) => {
? ? ? ? ? ? return a - b;
? ? ? ? });
? ? ? ? console.log(newArr);
? ? ? ? let obj = {}
? ? ? ? newArr.forEach(ele => {
? ? ? ? ? ? obj[ele] = ele;
? ? ? ? });
? ? ? ? console.log(Object.values(obj));
02-字符串反轉(zhuǎn)
//方法一:
//需求:自定義一個函數(shù)偿警, 實現(xiàn)字符串的反轉(zhuǎn)?
<script>
? ? function getRevStr(str) {
? ? let newStr = '';
? ? for(let i = str.length - 1; i <= 0; i--) {
? ? ? ? newStr += str.charAt(i);
? ? }
? ? return newStr;
}
let str = 'abcdefghijklmn';
console.log(getRevStr(str));
</script>
//方法二:
function getStr(str) {
? ? let newStr = null;
? ? for(let i = 0; i < str.length; i++) {
? ? ? ? newStr = str.split('').reverse().join().replace(',','');
? ? }
? ? return newStr
}
let str = 'abcdefg';
console.log(getStr(str));
03-斐波拉契數(shù)列
<script>
? ? //需求: 手寫一個方法求斐波那契數(shù)列的第N項的值
? ? //求斐波拉契數(shù)列---前兩項之和等于等三項
? ? function getFei(n) {
? ? //設(shè)置兩個初始值
? ? let one = 1, two = 2;
? ? //設(shè)置第三個值
? ? let num = 0;
? ? for(let i = 0; i < n; i++) {
? ? ? ? if(n <= 2) {
? ? ? ? ? ? num = 1;
? ? ? ? }else {
? ? ? ? ? ? one = two;
? ? ? ? ? ? two = num;
? ? ? ? ? ? num = one + two;
? ? ? ? }
? ? }
? ? return num;
}
console.log(getFei(6));//8
</script>
04-統(tǒng)計一個數(shù)出現(xiàn)的次數(shù)
<script>
? ? //需求:程序?qū)崿F(xiàn)對數(shù)據(jù)統(tǒng)計其出現(xiàn)的次數(shù)并按出現(xiàn)次數(shù)進(jìn)行排序
? ? //獲取隨機(jī)數(shù)組
? ? function getRandom(min,max,total) {
? ? let arr = [];
? ? for(let i = 0; i < total; i++) {
? ? ? ? arr.push(Math.floor(Math.Random() * (max - min + 1) + min))
? ? }
? ? return arr;
}
let result = getRandom(0,10,10);
//獲取每一個數(shù)字出現(xiàn)了幾次
function getCount(arr) {
? ? //聲明一個空對象躏救,用來存儲數(shù)組中出現(xiàn)了幾次,主要是利用對象中覆蓋的特性
? ? let obj = {};
? ? arr.foreach(ele => {
? ? ? ? //是為了計算出現(xiàn)的次數(shù)
? ? ? ? //如果之前沒有出現(xiàn)過這個值螟蒸,就將對象的這個值的value賦值為1
? ? ? ? if(obj[ele] == undefined) {
? ? ? ? ? ? obj[ele] = 1;
? ? ? ? }else {
? ? ? ? ? ? //如果已經(jīng)存在了就在原來的基礎(chǔ)上加1次
? ? ? ? ? ? obj[ele]++;
? ? ? ? }
? ? });
? //遍歷對象盒使,取出相對應(yīng)的變量值
? ? for(let key in obj) {
? ? ? ? console.log(key + '出現(xiàn)了' + obj[key] + '次');
? ? }
}
//調(diào)用函數(shù)
getCount(result);
</script>
05-行轉(zhuǎn)列
<script>
/*轉(zhuǎn)換 =>
let newArr = [
??['前端','后端','UI','ETL工程師'],
??['3人','5人','2人','10人'],
??['8-15k','10-25k','9-11k','6-12k'],
??['本科','研究生','大專','大專'],
];
*/
let arr = [
??['前端','3人','8-15k','本科'],
??['后端','5人','10-25k','研究生'],
??['UI','2人','9-11k','大專'],
??['ETL工程師','10人','6-12k','大專'],
];
//方法一:
function getNewArr(arr) {
? ? //聲明一個新數(shù)組
? ? let newArr = [];
? ? for(var i = 0; i < arr[0].length; i++) {
? ? ? ? //給新數(shù)組添加幾個空數(shù)組元素
? ? ? ? newArr[i] = [];
? ? ? ? for(var j = 0; j < arr.length; j++) {
? ? ? ? ? ? //將arr的行列值賦值給新數(shù)組的行列
? ? ? ? ? ? newArr[i][j] = arr[j][i];
? ? ? ? }
? ? }
? ? return newArr;
}
console.log(getNewArr(arr));
//方法二:使用 map 實現(xiàn)
</script>
06-對象轉(zhuǎn)數(shù)組
<script>
? /*var basket = [
? ? {fruit: "蘋果", veg: "胡蘿卜", nut: "花生"},
{fruit: "梨", veg: "西芹", nut: "堅果"},
{fruit: "香蕉", veg: "土豆", nut: "杏仁"},
{fruit: "西瓜", veg: "豆芽", nut: "核桃"}
]
// 轉(zhuǎn)換 =>
let arr = [['蘋果','胡蘿卜', '花生'], ['梨', '西芹', '堅果'], ["香蕉", "土豆", "杏仁"], ["西瓜","豆芽", "核桃"]];
*/
var basket = [
? ? {fruit: "蘋果", veg: "胡蘿卜", nut: "花生"},
{fruit: "梨", veg: "西芹", nut: "堅果"},
{fruit: "香蕉", veg: "土豆", nut: "杏仁"},
{fruit: "西瓜", veg: "豆芽", nut: "核桃"}
]
//方法一:
function getNewArr(arr) {
? ? let newArr = [];
? ? basket.forEach(ele => {
? ? ? ? newArr.push(Object.values(obj));
? ? })
? ? return newArr;
}
console.log(getNewArr(basket));
//方法二:
let result = Array.from(basket, e => Object.values(e));
console.log(result);
</script>
//需求:對象轉(zhuǎn)數(shù)組后進(jìn)行種類分類
let basket = [
? ? ? ? ? ? { fruit: '蘋果', veg: '胡蘿卜', nut: '花生' },
? ? ? ? ? ? { fruit: '梨', veg: '西芹', nut: '巴旦木' },
? ? ? ? ? ? { fruit: '香蕉', veg: '土豆', nut: '核桃' }
? ? ? ? ]
? ? ? ? function getNewArr(arr) {
? ? ? ? ? ? let Arr = [];
? ? ? ? ? ? basket.forEach(ele => {
? ? ? ? ? ? ? ? Arr.push(Object.values(ele));
? ? ? ? ? ? });
? ? ? ? ? ? let newArr = [];
? ? ? ? ? ? for (let i = 0; i < Arr[0].length; i++) {
? ? ? ? ? ? ? ? newArr[i] = [];
? ? ? ? ? ? ? ? for (let j = 0; j < Arr.length; j++) {
? ? ? ? ? ? ? ? ? ? newArr[i][j] = Arr[j][i];
? ? ? ? ? ? ? ? }
? ? ? ? ? ? }
? ? ? ? ? ? return newArr;
? ? ? ? }
? ? ? ? console.log(getNewArr(basket));
07-根據(jù)id查找內(nèi)容
<script>
? ? // 員工數(shù)組
var employees= [{
? ? name: '張三', // 員工名字
? ? empId: 0,? ? // 員工id
? ? age: 29,? ? // 員工年齡
? ? compId: 1? ? // 所屬公司id
}, {
? ? name: '李四',
? ? empId: 1,
? ? age: 26,
? ? compId: 2
}, {
? ? name: '王五',
? ? empId: 2,
? ? age: 28,
? ? compId: 1
}, {
? ? name: '小明',
? ? empId: 3,
? ? age: 32,
? ? compId: 3
}];
var companies = [{
? ? name: '百度', // 公司名稱
? ? id: 1? ? ? ? // 公司id
}, {
? ? name: '阿里巴巴',
? ? id: 2
}, {
? ? name: '騰訊',
? ? id: 3
}];
// 上面兩個數(shù)組轉(zhuǎn)換=>
//var newArr = ['員工張三,29歲七嫌,工作于百度', '員工李四少办,26歲,工作于阿里巴巴'诵原,'員工王五英妓,28歲挽放,工作于百度', '員工小明,32歲蔓纠,工作于騰訊']
//方法一:使用 函數(shù)原型 filter 進(jìn)行過濾
let newArr = [];
employees.forEach(ele => {
? ? companies.filter(item => {
? ? ? ? if(ele.compId === item.id) {
? ? ? ? ? ? newArr.push("員工" + ele.name + ',' + ele.age + '歲辑畦,工作于'+ item.name)
? ? ? ? ? ? // console.log("員工" + ele.name + ',' + ele.age + '歲,工作于'+ item.name);
? ? ? ? }
? ? })
});
console.log(newArr);
//方法二:
let newArr = [];
employees.forEach(e => {
? ? companies.forEach(ele => {
? ? ? ? if(e.compId === ele.id) {
? ? ? ? ? newArr.push("員工" + e.name + ',' + e.age + '歲腿倚,工作于'+ ele.name);
? ? ? ? }
? ? })
})
console.log(newArr);
</script>
08-去除不及格的學(xué)生
<script>
?let arr = [
? {
? ? id: 1,
? ? groupname: '小組1',
? ? students: [
? ? ? {id: 1, name: '張小嫻', score: 90},
? ? ? {id: 2, name: '李小宏', score: 70},
? ? ? {id: 3, name: '吳小說', score: 40},
? ? ? {id: 4, name: '五小加', score: 99},
? ? ]
? },
? {
? ? id: 1,
? ? groupname: '小組2',
? ? students: [
? ? ? {id: 5, name: '問小世', score: 60},
? ? ? {id: 6, name: '薩小斯', score: 50},
? ? ? {id: 7, name: '權(quán)小韋', score: 80},
? ? ? {id: 8, name: '離小天', score: 55},
? ? ]
? },
? {
? ? id: 1,
? ? groupname: '小組3',
? ? students: [
? ? ? {id: 9, name: '世小想', score: 70},
? ? ? {id: 10, name: '鄧小睿', score: 78},
? ? ? {id: 11, name: '沃小考', score: 90},
? ? ? {id: 12, name: '沙小醬', score: 59},
? ? ]
? },
]
// 轉(zhuǎn)換 =>
/*let newArr = [
? {
? ? id: 1,
? ? groupname: '小組1',
? ? students: [
? ? ? {id: 1, name: '張小嫻', score: 90},
? ? ? {id: 2, name: '李小宏', score: 70},
? ? ? {id: 4, name: '五小加', score: 99}
? ? ]
? },
? {
? ? id: 1,
? ? groupname: '小組2',
? ? students: [
? ? ? {id: 5, name: '問小世', score: 60},
? ? ? {id: 7, name: '權(quán)小韋', score: 80}
? ? ]
? },
? {
? ? id: 1,
? ? groupname: '小組3',
? ? students: [
? ? ? {id: 9, name: '世小想', score: 70},
? ? ? {id: 10, name: '鄧小睿', score: 78},
? ? ? {id: 11, name: '沃小考', score: 90}
? ? ]
? },
]*/
? ? arr.forEach(ele => {
? ? ele.students.forEach((e,i) => {
? ? ? ? if(e.score < 60) {
? ? ? ? ? ? ele.students.splice(i,1);
? ? ? ? }
? ? });
? ? // console.log(ele.students);
});
console.log(arr);
</script>
09-判斷一個對象是否是數(shù)組
function isArrary(arg) {
? ? ? ? // 判斷傳遞進(jìn)來的參數(shù)是否是一個對象
? ? ? ? if(typeof arg === 'object') {
? ? ? ? ? ? // 對象原型對象身上的原型方法獲取表示該對象的類型
? ? ? ? ? ? //toString() 方法返回一個表示該對象的字符串
? ? ? ? ? ? return Object.prototype.toString(arg) === '[object arrary]';
? ? ? ? }else {
? ? ? ? ? ? // 如果不是直接判斷為不是數(shù)組
? ? ? ? ? ? return false;
? ? ? ? }
? ? }
? ? let obj = {}
? ? console.log(isArrary(obj));
10-冒泡排序
?// 冒泡排序:每次比較相鄰的兩個數(shù)纯出,如果后一個比前一個小,換位置
? ? function bubbleSort(arr) {
? ? ? ? // 比較的次數(shù)
? ? ? ? for (let i = 0; i < arr.length - 1; i++) {
? ? ? ? ? ? // 每次比較幾次
? ? ? ? ? ? for (let j = 0; j < arr.length - 1; j++) {
? ? ? ? ? ? ? ? if (arr[j + 1] < arr[j]) {
? ? ? ? ? ? ? ? ? ? // ES6的互換變量
? ? ? ? ? ? ? ? ? ? [arr[j], arr[j + 1]] = [arr[j + 1], arr[j]];
? ? ? ? ? ? ? ? }
? ? ? ? ? ? }
? ? ? ? }
? ? ? ? return arr;
? ? }
? ? let arr = [3, 2, 4, 1, 5];
? ? console.log(bubbleSort(arr));
分析:
?// 原數(shù)據(jù):3敷燎,2暂筝,4,1硬贯,5
? ? // 兩兩相比較:(3焕襟,2)(2,4)(4澄成,1)(1胧洒,5)
? ? // 第一次:(2,3)墨状,4卫漫,1,5
? ? // 第二次:2肾砂,3列赎,(1,4)镐确,5
? ? // 第三次:2包吝,(1,3)源葫,4诗越,5
? ? // 第四次:(1,2)息堂,3嚷狞,4,5
11-快速排序法(二分法)
<script>
? ? // 快速排序法(二分法):采用二分法荣堰,取出中間數(shù)床未,數(shù)組每次和中間數(shù)比較,小的放到左邊振坚,大的放到右邊
? ? function quickSort(arr) {
? ? ? ? // 判斷數(shù)組里是否有數(shù)據(jù)薇搁,如果沒有返回一個空數(shù)組
? ? ? ? if (arr.length === 0) {
? ? ? ? ? ? return [];
? ? ? ? }
? ? ? ? // 中間數(shù)的索引 Math.floor---向下取整
? ? ? ? let centerIndex = Math.floor(arr.length / 2);
? ? ? ? // 獲取中間數(shù)
? ? ? ? let centerNum = arr.splice(centerIndex, 1);
? ? ? ? // 左邊數(shù)組
? ? ? ? let leftArr = [];
? ? ? ? // 右邊數(shù)組
? ? ? ? let rightArr = [];
? ? ? ? for (let i = 0; i < arr.length; i++) {
? ? ? ? ? ? // 和中間數(shù)進(jìn)行比較,小的放在左邊數(shù)組渡八,大的放在右邊數(shù)組
? ? ? ? ? ? if (arr[i] < centerNum) {
? ? ? ? ? ? ? ? leftArr.push(arr[i]);
? ? ? ? ? ? } else {
? ? ? ? ? ? ? ? rightArr.push(arr[i])
? ? ? ? ? ? }
? ? ? ? }
? ? ? ? // 遞歸進(jìn)行以上操作啃洋,并將分割的三部分連接起來 ?concat()數(shù)組連接
? ? ? ? return quickSort(leftArr).concat(centerNum, quickSort(rightArr));
? ? }
? ? let arr = [3, 1, 4, 5, 2];
? ? console.log(quickSort(arr));
</script>
12-統(tǒng)計一個字符串出現(xiàn)頻率最高的字母/數(shù)字
<script>
? ? // 統(tǒng)計一個字符串出現(xiàn)頻率最高的字母/數(shù)字
? ? function strHeight(str) {
? ? ? ? str = String(str);//將數(shù)字轉(zhuǎn)換為字符串
? ? ? ? let strArr = [...str];//分割成數(shù)組
? ? ? ? let max = 0;//最多次數(shù)
? ? ? ? let maxValue = '';//出現(xiàn)最高的值
? ? ? ? let obj = {};
? ? ? ? strArr.forEach(item => {
? ? ? ? ? ? // obj[item] 表示 obj 中 item 鍵的鍵值
? ? ? ? ? ? // 利用對象的鍵只能出現(xiàn)一次的特性传货,判斷之前該鍵有沒有值,如果沒有就賦值為1裂允,如果有就在此基礎(chǔ)上加1
? ? ? ? ? ? obj[item] = obj[item] === undefined ? 1 : obj[item] + 1;
? ? ? ? ? ? if (obj[item] > max) {
? ? ? ? ? ? ? ? max = obj[item];
? ? ? ? ? ? ? ? maxValue = item
? ? ? ? ? ? }
? ? ? ? });
? ? ? ? return (`出現(xiàn)頻率最多的是${maxValue}损离,出現(xiàn)了${max}次`);
? ? }
? ? let str = 1123464576532346576
? ? console.log(strHeight(str));
</script>
13-實現(xiàn)一個sleep函數(shù)
<script>
? ? //實現(xiàn)一個sleep函數(shù)----根據(jù)傳遞的時間,等待執(zhí)行時間
? ? function sleep(time) {
? ? ? ? return new Promise((resolve, reject) => {
? ? ? ? ? ? setTimeout(resolve, time);
? ? ? ? })
? ? }
? ? sleep(1000).then(() => {
? ? ? ? console.log('你好世界');
? ? })
</script>
14-大小寫轉(zhuǎn)換
<script>
? ? let str = 'aBc';
? ? str = str.replace(/[a-zA-Z]/g, content => {
//?content.toUpperCase()---轉(zhuǎn)大寫
//?content.toLowerCase() ---轉(zhuǎn)小寫
? ? ? ? return content.toUpperCase() === content ? content.toLowerCase() : content.toUpperCase();
? ? })
? ? console.log(str);
</script>
15-三種合并對象的方法
letarr1={a:1,b:2,c:3};
letarr2={d:4,e:5,a:6};
//方法一:拓展運(yùn)算符绝编,后面相同的屬性覆蓋前一個
letarr3={...arr1,...arr2};
//方法二:Object.assign()僻澎,后面相同的屬性覆蓋前一個
letarr3=Object.assign(arr1,arr2);
//方法三:Object.keys(),相同的屬性只取第一個
Object.keys(arr1).forEach(key=>{arr2[key]=arr1[key]})
16-去重的幾種方式
<script>
? ? // 方法一: Set
? ? let arr = [1, 2, 2, 3, 2, 4, 3, 5, 5, 7, 6, 7];
? ? let arr1 = [...new Set(arr)];
? ? // console.log(arr1);
? ? // 方法二:fillter
? ? let arr2 = arr.filter((item, index) => { return arr.indexOf(item) === index })
? ? // console.log(arr2);
? ? // 方法三:
? ? function qc(arr) {
? ? ? ? let obj = {};
? ? ? ? let arr3 = [];
? ? ? ? arr.forEach(item => {
? ? ? ? ? ? if(obj[item] === undefined) {
? ? ? ? ? ? ? ? obj[item] = obj[item]+1;
? ? ? ? ? ? ? ? arr3.push(item);
? ? ? ? ? ? }
? ? ? ? });
? ? ? ? return arr3;
? ? }
? ? console.log(qc(arr));
</script>
17-數(shù)組扁平化并排序
<script>
? ? // 將數(shù)組扁平化并去除其中重復(fù)數(shù)據(jù)十饥,最終得到一個升序且不重復(fù)的數(shù)組
? ? // 數(shù)組扁平化:多維數(shù)組轉(zhuǎn)化為一維數(shù)組
? ? // 數(shù)組扁平化的幾種方式
? ? // 方式一:
? ? let arr = [1, [2, [3, [4, 3, 2,[5,2]]]], 6];
? ? // let arr_flat = arr.flat(Infinity);//數(shù)組扁平化
? ? let arr_flat = Array.from(new Set(arr.flat(Infinity))).sort((a, b) => { return b - a });//扁平化并升序排列
? ? // console.log(arr_flat);
? ? // 方式二:
? ? // 獲取到扁平化后的數(shù)組
? ? let str_replace = Array.from(arr.toString().replace(/[]/g, '').split(',').map(item => {return Number(item);}));
? ? // 對數(shù)組進(jìn)行去重并升序排列
? ? let arr1 = str_replace.filter((item,index) => {
? ? ? ? return str_replace.indexOf(item) === index
? ? }).sort((a, b) => { return b - a });
? ? console.log(arr1);
? ? // 方式三:
? ? let str_join = arr.join(',').split(',').map(item => {
? ? ? ? return parseInt(item);
? ? }).sort((a, b) => { return b - a })
? ? // console.log(str_join);
? ? // 方式四:
? ? // some() 方法用于檢測數(shù)組中的元素是否滿足指定條件(函數(shù)提供),會循環(huán)遍歷
? ? function flatten(arr) {
? ? ? ? while (arr.some(item => Array.isArray(item))) {
? ? ? ? ? ? arr = [].concat(...arr).sort((a, b) => { return b - a });
? ? ? ? }
? ? ? ? return arr;
? ? }
? ? // console.log(flatten(arr));
17-原生js實現(xiàn)雙向數(shù)據(jù)綁定
<body>
</h3>
<!-- <script>
? ? ? ? /*
? ? ? ? ? ? oninput: 是監(jiān)聽綁定輸入框的事件
? ? ? ? ? ? 原生js 實現(xiàn)數(shù)據(jù)雙向綁定:
? ? ? ? ? ? defineProperty:給對象動態(tài)綁定屬性
? ? ? ? ? ? ? ? Object.defineProperty(綁定數(shù)據(jù)名稱,綁定數(shù)據(jù)屬性,配置項)
? ? ? ? */
? ? ? ? var ipt = document.querySelector('#ipt');
? ? ? ? var title = document.querySelector('#title');
? ? ? ? // 創(chuàng)建一個對象窟勃,用于存儲生成的數(shù)據(jù)
? ? ? ? var data = {}
? ? ? ? Object.defineProperty(data, 'msg', {
? ? ? ? ? ? // get: 給 msg 賦的初始值
? ? ? ? ? ? get: function () {
? ? ? ? ? ? ? ? return '你好世界'
? ? ? ? ? ? },
? ? ? ? ? ? // set: 當(dāng)你拿到最新的數(shù)據(jù),需要做的事情
? ? ? ? ? ? set: function (newVal) {
? ? ? ? ? ? ? ? ipt.value = newVal;
? ? ? ? ? ? ? ? title.innerHTML = newVal;
? ? ? ? ? ? }
? ? ? ? })
? ? ? ? // 將 msg 綁定到元素身上
? ? ? ? ipt.value = data.msg;
? ? ? ? title.innerHTML = data.msg;
? ? ? ? // input 輸入框發(fā)生改變時執(zhí)行的函數(shù)
? ? ? ? function iptChange(val) {
? ? ? ? ? ? // 修改數(shù)據(jù)源逗堵,會自動觸發(fā) set 方法
? ? ? ? ? ? data.msg = val;//將輸入框中的 value 值賦值給 msg
? ? ? ? }
? ? </script> -->
<script>
? ? ? ? // 獲取元素
? ? ? ? var ipt = document.querySelector('#ipt');
? ? ? ? var title = document.getElementById('title');
? ? ? ? // 聲明一個對象秉氧,專門拿來存儲數(shù)
? ? ? ? var data = {};
? ? ? ? // Object的原型成員 defineProperty(綁定數(shù)據(jù)名稱,綁定數(shù)據(jù)屬性,配置項);
? ? ? ? // 作用: 實現(xiàn)動態(tài)創(chuàng)建對象屬性,實現(xiàn)數(shù)據(jù)的雙向綁定
? ? ? ? Object.defineProperty(data,'msg', {
? ? ? ? ? ? get: function() {
? ? ? ? ? ? ? ? return '你好世界'
? ? ? ? ? ? },
? ? ? ? ? ? set: function(newVal) {
? ? ? ? ? ? ? ? ipt.value = newVal;
? ? ? ? ? ? ? ? title.innerHTML = newVal;
? ? ? ? ? ? }
? ? ? ? });
? ? ? ? ipt.value = data.msg;
? ? ? ? title.innerHTML = data.msg;
? ? ? ? function iptChange(val) {
? ? ? ? ? ? data.msg = val;
? ? ? ? }
</script>
</body>