首頁  >  文章  >  web前端  >  JavaScript數組-字串-數學函數

JavaScript數組-字串-數學函數

php中世界最好的语言
php中世界最好的语言原創
2018-03-08 15:24:291742瀏覽

這次帶給大家JavaScript陣列-字串-數學函數,使用JavaScript陣列-字串-數學函數的注意事項有哪些,下面就是實戰案例,一起來看一下。

陣列方法裡push、pop、shift、unshift、join、split分別是什麼作用。
push()方法將一個或多個元素新增到陣列的結尾,並傳回陣列新的長度(length 屬性值)。
pop() 方法刪除一個陣列中的最後的一個元素,並且傳回這個元素。
shift()方法刪除陣列的第一個元素,並傳回這個元素。此方法會改變數組的長度。
unshift() 方法在陣列的開頭新增一個或多個元素,並傳回陣列新的 length 值。
join()方法將陣列中的所有元素連接成一個字串。
**split() **方法透過把字串分割成子字串來把一個 String物件分割成一個字串陣列。

程式碼問題

陣列

用splice 實作push、pop、shift、unshift方法
定義和用法
splice() 方法用於插入、刪除或替換數組的元素。
語法

arrayObject.splice(index,howmany,element1,.....,elementX)

參數描述
index 必要。規定從何處新增/刪除元素。此參數是開始插入和(或)刪除的陣列元素的下標,必須是數字。
howmany 必需。規定應該刪除多少元素。必須是數字,但可以是 "0"。如果未規定此參數,則刪除從 index 開始到原始數組結尾的所有元素。 element1 可選。規定要新增到數組的新元素。從 index 所指的下標處開始插入。
elementX 可選。可為陣列新增若干元素。
傳回值
如果從 arrayObject 中刪除了元素,則傳回的是含有已刪除的元素的陣列。

splice->push
var a = [1,2,3,4,5]
var b = [1,2,3,4,5]
console.log(a);
console.log(b);
a.push(6);
b.splice(5,1,6);
console.log(a);
console.log(b);
splice->pop
var a = [1,2,3,4,5]
var b = [1,2,3,4,5]
console.log(a);
console.log(b);
a.pop();
b.splice(4,1);
console.log(a);
console.log(b);
splice->shift
var a = [1,2,3,4,5]
var b = [1,2,3,4,5]
console.log(a);
console.log(b);
a.shift();
b.splice(0,1);
console.log(a);
console.log(b);
splice->unshift
var a = [1,2,3,4,5]
var b = [1,2,3,4,5]
console.log(a);
console.log(b);
a.unshift(-1);
b.splice(0,0,-1);
console.log(a);
console.log(b);

使用陣列拼接出如下字串

var prod = {    name: '女装',    styles: ['短款', '冬季', '春装']
};function getTpl(data){//todo...};var result = getTplStr(prod);  //result为下面的字符串
    <dl class="product">
        <dt>女装</dt>
        <dd>短款</dd>
        <dd>冬季</dd>
        <dd>春装</dd>
    </dl>

程式碼:

var prod = {
name: &#39;女装&#39;,
styles: [&#39;短款&#39;, &#39;冬季&#39;, &#39;春装&#39;]
};
function getTplStr(data){
var htmls = [];
htmls.push(&#39;<dl class="product">&#39;,&#39;<dt>&#39;+data,name+&#39;<dt>&#39;);
for(i=0;i<data.styles.length;i++){
htmls.push(&#39;<dd>&#39;+data.styles[i]+&#39;<dd>&#39;)
}
htmls.push(&#39;<dl>&#39;);
var htmls = htmls.join(&#39;&#39;)
return htmls
};
var result = getTplStr(prod);  //result为下面的字符串
console.log(result)

寫一個find函數,實作下面的函數

#
var arr = [ "test", 2, 1.5, false ]
find(arr, "test") // 0
find(arr, 2) // 1
find(arr, 0) // -1

程式碼:

var arr = [ "test", 2, 1.5, false ]
var find = function(a,b){
console.log(a.indexOf(b))
}
find(arr, "test") // 0
find(arr, 2) // 1
find(arr, 0) // -1

寫一個函數filterNumeric,實作下列函數

arr = ["a", 1,3,5, "b", 2];
newarr = filterNumeric(arr);  //   [1,3,5,2]

程式碼:
方法一:

#
arr = ["a", 1,3,5, "b", 2];
var filterNumberic = function(data){
var a = [];
for(i=0;i<data.length;i++){
if(typeof data[i] === &#39;number&#39;){
a.push(data[i]);
}
}
return a
}

newarr = filterNumberic(arr);  //   [1,3,5,2]
console.log(newarr)
方法二:

arr = ["a", 1,3,5, "b", 2];
function isNumber(element) {
return typeof element === &#39;number&#39;;
}
var newarr = arr.filter(isNumber)
console.log(newarr)

物件obj有個className屬性,裡面的值為的是空格分割的字串(和html元素的class特性類似),寫addClass、removeClass函數,有以下功能:

var obj = {className: &#39;open menu&#39;}addClass(obj, &#39;new&#39;) // obj.className=&#39;open menu new&#39;addClass(obj, &#39;open&#39;)  // 因为open已经存在,此操作无任何办法addClass(obj, &#39;me&#39;) // obj.className=&#39;open menu new me&#39;console.log(obj.className)  // "open menu new me"
 removeClass(obj, &#39;open&#39;) // obj.className=&#39;menu new me&#39;  removeClass(obj, &#39;blabla&#39;)  // 不变

程式碼:

var obj = {className: &#39;open menu&#39;}var addClass = function(a,b){var name = a.className.split(" ");if(name.indexOf(b) === -1) {name.push(b);}else{console.log("因为"+b+"已经存在,此操作无任何办法");}a.className = name.join(" ");console.log(&#39;obj.className=&#39;+a.className);}var removeClass = function(a,b){var name = a.className.split(" ");if(name.indexOf(b) !== -1){name.splice(name.indexOf(b),1)a.className = name.join(" ");console.log(&#39;obj.className=&#39;+a.className)}else{console.log(&#39;不变&#39;)}}
   addClass(obj, &#39;new&#39;) // obj.className=&#39;open menu new&#39;    addClass(obj, &#39;open&#39;)  // 因为open已经存在,此操作无任何办法    addClass(obj, &#39;me&#39;) // obj.className=&#39;open menu new me&#39;    console.log(obj.className)  // "open menu new me"    removeClass(obj, &#39;open&#39;) // obj.className=&#39;menu new me&#39;    removeClass(obj, &#39;blabla&#39;)  // 不变

寫一個camelize函數,把my-short-string形式的字串轉換成myShortString形式的字串,如:

camelize("background-color") == &#39;backgroundColor&#39;
camelize("list-style-image") == &#39;listStyleImage&#39;

程式碼:

#
function camelize(string){
return string.replace(/-/g,'')
}
console.log(camelize("background-color"))
camelize("background-color") == &#39;backgroundColor&#39;
camelize("list-style-image") == &#39;listStyleImage&#39;

如下程式碼輸出什麼?為什麼?

arr = ["a", "b"];
arr.push( function() { alert(console.log(&#39;hello hunger valley&#39;)) } );
arrarr.length-1  // ?

因為arr.push( function() { alert(console.log('hello hunger valley')) } );將function() { alert(console.log('hello hunger valley')push到arr[]最後一位,arr[arr.length-1]()取該數組最後一位,然後立即執行函數,由於function() { alert(console.log('hello hunger valley')中console.log只允許在控制台中打開,所以結果為undefined。 ##程式碼:

arr = ["a", 1,3,4,5, "b", 2];
//对原数组进行操作,不需要返回值
filterNumericInPlace(arr);
console.log(arr)  // [1,3,4,5,2]

寫一個ageSort函數實作如下功能:

arr = ["a","d", 1,3,4,5, "b", 2];
//对原数组进行操作,不需要返回值
function filterNumericInPlace(data){
for(i=0;i<data.length;i++){
if(typeof data[i] === &#39;string&#39;){
data.splice(i,1);
i--;//splice指针减少1,否则获取不了数组中全部元素。
}
}
}
filterNumericInPlace(arr);
console.log(arr)  // [1,3,4,5,2]

程式碼:
方法一:

##
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 ]

方法二:

function ageSort(arr){
arr.sort(function(a,b){return a.age-b.age})
return arr
}
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 ]
console.log(ageSort(people))

寫一個filter(arr, func) 函數用來過濾數組,接受兩個參數,第一個是要處理的數組,第二個參數是
回調函數
(回呼函數遍歷接受每一個陣列元素,當函數傳回true時保留該元素,否則刪除該元素)。 #

function ageSort(a){
for(i=0;i0){
var b = a[i];
a[i] = a[j];
a[j] = b;
}
}
}
return a
}
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 ]
console.log(ageSort(people))

字串


寫一個ucFirst函數,傳回第一個字母為大寫的字元。寫一個函數truncate(str, maxlength), 如果str的長度大於maxlength,會把str截斷到maxlength長,並加上...,如:

function isNumeric (el){return typeof el === &#39;number&#39;;}arr = ["a",3,4,true, -1, 2, "b"]
 arr = filter(arr, isNumeric) ; // arr = [3,4,-1, 2],  过滤出数字  arr = filter(arr, function(val) { return val > 0 });  // arr = [2] 过滤出大于0的整数
代碼:
function filter(data,callback){return data.filter(callback)}
   function isNumeric (el){        return typeof el === &#39;number&#39;;     }    arr = ["a",3,4,true, -1, 2, "b"]    arr = filter(arr, isNumeric) ; // arr = [3,4,-1, 2],  过滤出数字    console.log(arr)    arr = filter(arr, function(val) { return val > 0 });  // arr = [2] 过滤出大于0的整数    console.log(arr)

數學函數


寫一個函數limit2,保留數字小數點後兩位,四捨五入,如:

ucFirst("hunger") == "Hunger"

代碼:


#

function ucFirst(string){
return string[0].toUpperCase()+string.slice(1);
}
console.log(ucFirst("hunger"))
ucFirst("hunger") == "Hunger"

寫一個函數,取得從min到max之間的隨機數,包括min不包含max。隨機整數,包括min包含max。包括)的隨機數.

程式碼:

truncate("hello, this is hunger valley,", 10)) == "hello, thi...";
truncate("hello world", 20)) == "hello world"

相信看了本文案例你已經掌握了方法,更多精彩請關注php中文網其它相關文章!

相關閱讀:


JS的閉包與計時器


JS的Dom與事件小結


以上是JavaScript數組-字串-數學函數的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn