- 數(shù)組方法里push、pop、shift、unshift、join、split分別是什么作用。(*)
- (push、pop)堆棧方法:
push、pop方法可以使數(shù)組類(lèi)似于棧,在棧的頂部(數(shù)組末尾)進(jìn)行插入和移除。棧是一種限制插入和刪除項(xiàng)的數(shù)據(jù)結(jié)構(gòu)(最新添加的項(xiàng)最早被移除--后進(jìn)先出)
var arr = [1,2,3];
arr.push(4);//返回4并添加到數(shù)組末尾
console.log(arr);//[1, 2, 3, 4]
arr.pop();//取得數(shù)組末尾4并移除
console.log(arr);//[1,2,3]
- (shift、unshift)隊(duì)列方法:
shift、unshift方法使數(shù)組以隊(duì)列數(shù)據(jù)結(jié)構(gòu)的方式對(duì)數(shù)組首位進(jìn)行添加(推入)刪除(先進(jìn)先出)
var arr = [1,2,3];
arr.shift();//取得數(shù)組首位1并移除
console.log(arr);//[2, 3]
arr.unshift(0,1);//返回?cái)?shù)組當(dāng)前長(zhǎng)度4,并在數(shù)組首位推入0,1
console.log(arr);//[0, 1, 2, 3]
- join操作方法:
數(shù)組對(duì)象的方法都是默認(rèn)用逗號(hào)分隔字符串的形式返回?cái)?shù)組的每一項(xiàng)。如果使用join()方法,則可以使用不同的分隔符來(lái)構(gòu)建這個(gè)字符串。join()方法是把數(shù)組分隔并返回字符串
var arr = [1,2,3,4,5,6,7];
arr.join("||");
console.log(arr);//"1||2||3||4||5||6||7"
arr.join("--");
console.log(arr);//"1--2--3--4--5--6--7"
-
利用轉(zhuǎn)義字符對(duì)數(shù)組進(jìn)行轉(zhuǎn)化:
/r(橫向跳到下一制表符位置)
/t(回車(chē)這里不換行)
/n(回車(chē)并換行)
利用轉(zhuǎn)義字符分隔數(shù)組 split操作方法:
split()是把一段字符串以設(shè)定的分隔符來(lái)分隔并返回為數(shù)組的方法,split(separator, limit), separator指定用來(lái)分割字符串的字符,limit為返回的數(shù)組長(zhǎng)度是個(gè)可選值
var str = "Hello,world";
str.split("");//按""進(jìn)行分隔["H", "e", "l", "l", "o", ",", "w", "o", "r", "l", "d"]
var str1 = "a b c d e";
str1.split(" ", 3);//按" "空格進(jìn)行分隔并返回的數(shù)組長(zhǎng)度為3["a", "b", "c"]
- 數(shù)組
- 用 splice 實(shí)現(xiàn) push、pop、shift、unshift方法 (3*)
var arr = [1,2,3,4,5];
function push(arr, val) {
arr.splice(arr.length, 0, val);
return arr.length;
}
function pop(arr) {
return arr.splice(arr.length - 1, 1)[0];
}
function unshift(arr, val) {
arr.splice(0, 0, val);
return arr.length;
}
function shift(arr) {
return arr.splice(0, 1)[0];
}
- 使用數(shù)組拼接出如下字符串 (3*)
var prod = {
name: '女裝',
styles: ['短款', '冬季', '春裝']
};
function getTpl(data){
var dom = [];
dom.push('<dl class="product">');
dom.push('<dt>' + data.name + '</dt>');
for (var i = 0; i < data.styles.length; i++) {
dom.push('<dd>' + data.styles[i] + '<dd>');
}
dom.push('</dl>');
return dom.join("\n");;
};
var result = getTplStr(prod); //result為下面的字符串
<dl class="product">
<dt>女裝</dt>
<dd>短款</dd>
<dd>冬季</dd>
<dd>春裝</dd>
</dl>
- 寫(xiě)一個(gè)find函數(shù),實(shí)現(xiàn)下面的功能 (3*)
var arr = [ "test", 2, 1.5, false ]
find(arr, "test") // 0
find(arr, 2) // 1
find(arr, 0) // -1
function find(arr, val){
// return arr.indexOf(val);
for(var i = 0; i < arr.length; i++){
if (arr[i] === val) {
return i;
}
}
return -1;
}
function find(arr, val) {
return arr.indexOf(val);
}//ES5方法
- 寫(xiě)一個(gè)函數(shù)filterNumeric,實(shí)現(xiàn)如下功能 (****)
arr = ["a", "b", 1, 3, 5, "b", 2];
newarr = filterNumeric(arr); // [1,3,5,2]
var arr1 = ["a", "b", 1, 3, 5, "b", 2];
function filterNumeric(arr) {
var arr2= [];
for (var i = 0; i < arr.length; i++) {
if (typeof arr[i] == "number") {
arr2.push(arr[i]);
}
}
return arr2;
}
var newarr = filterNumeric(arr1); //[1,3,5,2]
- 對(duì)象obj有個(gè)className屬性,里面的值為的是空格分割的字符串(和html元素的class特性類(lèi)似),寫(xiě)addClass、removeClass函數(shù),有如下功能:(****)
var obj = {
className: 'open menu'
}
addClass(obj, 'new') // obj.className='open menu new'
addClass(obj, 'open') // 因?yàn)閛pen已經(jīng)存在,此操作無(wú)任何辦法
addClass(obj, 'me') // obj.className='open menu new me'
console.log(obj.className) // "open menu new me"
removeClass(obj, 'open') // obj.className='menu new me'
removeClass(obj, 'blabla') // 不變
var obj = {
className: 'open menu'
};
function addClass(obj, value) {
var arr = obj.className.split(" ");
if (arr.indexOf(value) == -1) {
arr.push(value);
obj.className = arr.join(" ");
return obj.className;
}
else {
console.log("因?yàn)? + value + "已經(jīng)存在,此操作無(wú)任何辦法");
}
}
function removeClass(obj, value) {
var arr = obj.className.split(" ");
if (arr.indexOf(value) != -1) {
arr.splice(arr.indexOf(value), 1);
obj.className = arr.join(" ");
return obj.className;
}
else {
console.log(value + "不存在");
}
}
- 寫(xiě)一個(gè)camelize函數(shù),把my-short-string形式的字符串轉(zhuǎn)化成myShortString形式的字符串,如 (3*)
camelize("background-color") == 'backgroundColor'
camelize("list-style-image") == 'listStyleImage'
slice(start,end)數(shù)組方法可以直接用于數(shù)組,當(dāng)對(duì)象是string和number時(shí)slice會(huì)把string和number拷貝到一個(gè)新數(shù)組里(轉(zhuǎn)化成一個(gè)新數(shù)組進(jìn)行操作)
function camelize(str) {
var arr = str.split("-");
for (var i = 1; i < arr.length; i++) {
arr[i] = arr[i].slice(0, 1).toUpperCase() + arr[i].slice(1);
}
str = arr.join("");
return str;
}
camelize('background-color');
camelize('list-style-image');
- 如下代碼輸出什么?為什么? (***)
arr = ["a", "b"];
arr.push( function() { alert(console.log('hello hunger valley')) } );
arr[arr.length-1]() // 控制臺(tái)輸出'hello hunger valley',彈窗顯示undefined
//arr.push()方法把函數(shù)添加到了數(shù)組arr的最尾端
//arr[arr.length-1]() 直接執(zhí)行了數(shù)組中的函數(shù)
//函數(shù)執(zhí)行console.log('hello hunger valley')輸出字符串,但返回的是undefined
//彈窗變?yōu)閍lert(undefined)彈出undefined結(jié)果
- 寫(xiě)一個(gè)函數(shù)filterNumericInPlace,過(guò)濾數(shù)組中的數(shù)字,刪除非數(shù)字 (4*)
arr = ["a", "b", 1, 3, 4, 5, "b", 2];
//對(duì)原數(shù)組進(jìn)行操作,不需要返回值
filterNumericInPlace(arr);
console.log(arr) // [1,3,4,5,2]
arr = ["a", "b", 1, 3, 4, 5, "b", 2];
//對(duì)原數(shù)組進(jìn)行操作,不需要返回值
function filterNumericInPlace(arr) {
for (var i = arr.length-1; i >= 0; i--) {
if(typeof arr[i] != "number") {
arr.splice(i, 1);//會(huì)改變數(shù)組的長(zhǎng)度
}
}
}//使用i++會(huì)因?yàn)閿?shù)組長(zhǎng)度改變,每進(jìn)行刪除時(shí)數(shù)組頭部開(kāi)始后面的每一項(xiàng)的位置都在前移。
//而使用i--,數(shù)組長(zhǎng)度改變但數(shù)組前部的其他項(xiàng)的位置沒(méi)有變只是尾部各項(xiàng)的位置前移,但尾部各項(xiàng)因?yàn)楸闅v過(guò)了的位置前移并不影響。
//就好像一個(gè)隊(duì)列移走哪個(gè)位置的人后排的所有人就會(huì)向前走一步占據(jù)被移走的那個(gè)位置,但前排的人位置始終是不變的。
filterNumericInPlace(arr);
console.log(arr); // [1,3,4,5,2]
- 寫(xiě)一個(gè)ageSort函數(shù)實(shí)現(xiàn)如下功能 (3*)
var john = { name: "John Smith", age: 23 }
var mary = { name: "Mary Key", age: 18 }
var bob = { name: "Bob-small", age: 6 }
var people = [ john, mary, bob ]
ageSort(people) // [ bob, mary, john ]
var john = { name: "John Smith", age: 23 }
var mary = { name: "Mary Key", age: 18 }
var bob = { name: "Bob-small", age: 6 }
var people = [ john, mary, bob ]
function ageSort(people) {
var arr = [];
people.sort(function(a, b){ return a.age - b.age;});
for (var i = 0; i < people.length; i++) {
arr.push(people[i].name);
}
return arr;
}
ageSort(people) // [ bob, mary, john]
//sort()數(shù)組方法可以隨機(jī)抽取數(shù)組內(nèi)的兩個(gè)項(xiàng)進(jìn)行比較,并進(jìn)行排序。
- 寫(xiě)一個(gè)filter(arr, func) 函數(shù)用于過(guò)濾數(shù)組,接受兩個(gè)參數(shù),第一個(gè)是要處理的數(shù)組,第二個(gè)參數(shù)是回調(diào)函數(shù)(回調(diào)函數(shù)遍歷接受每一個(gè)數(shù)組元素,當(dāng)函數(shù)返回true時(shí)保留該元素,否則刪除該元素)。實(shí)現(xiàn)如下功能: (****)
function isNumeric (el){
return typeof el === 'number';
}
arr = ["a",3,4,true, -1, 2, "b"]
function filter(arr, func) {
for (var i = 0; i < arr.length; i++) {
if (!func(arr[i]) || typeof arr[i] == "boolean") {
arr.splice(i, 1);
}
}
return arr;
}
arr = filter(arr, isNumeric) ; // arr = [3,4,-1, 2], 過(guò)濾出數(shù)字
arr = filter(arr, function(val) { return val > 0 }); // arr = [3, 4, 2] 過(guò)濾出大于0的整數(shù)
- 字符串
- 寫(xiě)一個(gè) ucFirst函數(shù),返回第一個(gè)字母為大寫(xiě)的字符 (***)
function ucFirst(str) {
str = str.slice(0, 1).toUpperCase() + str.slice(1);
return str;
}
ucFirst("hunger") == "Hunger"
- 寫(xiě)一個(gè)函數(shù)truncate(str, maxlength), 如果str的長(zhǎng)度大于maxlength,會(huì)把str截?cái)嗟絤axlength長(zhǎng),并加上...,如 (4*)
truncate("hello, this is hunger valley,", 10)) == "hello, thi...";
truncate("hello world", 20)) == "hello world"
function truncate(str, maxlength) {
if (str.length >= maxlength) {
str = str.slice(0, maxlength+1) + "...";
}
return str;
}
- 數(shù)學(xué)函數(shù)
- 寫(xiě)一個(gè)函數(shù)limit2,保留數(shù)字小數(shù)點(diǎn)后兩位,四舍五入, 如: (**)
var num1 = 3.456;
limit2( num1 ); //3.46
limit2( 2.42 ); //2.42
function limit2(num) {
num = Math.round(num * 100);
return num/100;
}
var num1 = 3.456;
limit2( num1 ); //3.46
limit2( 2.42 ); //2.42
- 寫(xiě)一個(gè)函數(shù),獲取從min到max之間的隨機(jī)數(shù),包括min不包括max (***)
function ran(min, max) {
return Math.random() * (max - min) + min;
}
- 寫(xiě)一個(gè)函數(shù),獲取從min都max之間的隨機(jī)整數(shù),包括min包括max (***)
function ran1(min, max) {
return Math.floor(Math.random() * (max - min + 1) + min);
}//floor是向下舍入。
- 寫(xiě)一個(gè)函數(shù),獲取一個(gè)隨機(jī)數(shù)組,數(shù)組中元素為長(zhǎng)度為len,最小值為min,最大值為max(包括)的隨機(jī)數(shù) (3*)
function ran2(min, max, len) {
var arr = [];
for (var i = 0; i < len; i++) {
arr.push(Math.floor(Math.random() * (max - min + 1) + min));
}
return arr;
}
本博客版權(quán)歸 本人和饑人谷所有,轉(zhuǎn)載需說(shuō)明來(lái)源
