成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專(zhuān)欄INFORMATION COLUMN

javascript之Array類(lèi)型-讀書(shū)筆記

kun_jian / 1846人閱讀

摘要:每當(dāng)在末尾添加一項(xiàng)后,其都會(huì)自動(dòng)更新以反應(yīng)這一變化。從而存在兩個(gè)以上不同版本的構(gòu)造函數(shù)。如果數(shù)組中的某一項(xiàng)值是或,那么該值在和方法返回的結(jié)果中以空字符串表示。對(duì)數(shù)組每一項(xiàng)運(yùn)行給定函數(shù),返回每次函數(shù)調(diào)用的結(jié)果組成的數(shù)組。

Array類(lèi)型

ECMAscrip與其他多數(shù)語(yǔ)言中數(shù)組的共同點(diǎn):
都是數(shù)據(jù)的有序列表

不同點(diǎn):數(shù)組的每一項(xiàng)可以保存任何類(lèi)型的數(shù)據(jù),數(shù)組的大小是可以動(dòng)態(tài)調(diào)整的,及隨著數(shù)據(jù)的添加自動(dòng)增長(zhǎng),以容納新增的數(shù)據(jù)

1 創(chuàng)建數(shù)組

1.1 同Object一樣,創(chuàng)建數(shù)組的方式有兩種

Arrey構(gòu)造函數(shù)

var colors = new Array();

向Array構(gòu)造函數(shù)中傳遞數(shù)組中應(yīng)該包含的項(xiàng),
var colors = new Array("red","green","blue");

給構(gòu)造函數(shù)傳遞一個(gè)數(shù)值,表示數(shù)組的長(zhǎng)度(項(xiàng)數(shù)),
var colors = new Array(3);

也可省略new操作符,
var colors = Ayyay(3); var colors = Array("red");

數(shù)組字面量表示法

數(shù)組字面量表示法由一對(duì)包含數(shù)組項(xiàng)的方括號(hào)表示,
var color = ["red","green","blue"];

1.2 讀取和設(shè)置數(shù)組的值

要使用方括號(hào)并提供相應(yīng)的值是基于0的數(shù)字索引。

var colors = ["red","blue","green"];
alert (colors[0]);
colors[2] = "black"; //修改第三項(xiàng)
colors[3] = "brown";//新增第四項(xiàng)

數(shù)組中的length屬性很有特點(diǎn):不是只讀的。通過(guò)設(shè)置這個(gè)屬性??梢詮臄?shù)組的末尾移除項(xiàng),或向數(shù)組中新增項(xiàng)。

移除一項(xiàng)

var colors = ["red","blue","green"];
colors.length = 2;
alert (colors[2]); //undefined

新增一項(xiàng)

var colors["red","bule","green"];
colors.length = 4;
alert(coloes[3]);//undefined

利用length屬性在末尾新增項(xiàng)

var colors = ["red","blue","green"];
colors[colors.length] = "black";
colors[colors.length] = "brown";
alert(colors[4]);//brown
由于數(shù)組的最后一項(xiàng)索引始終時(shí)length-1,所以下一項(xiàng)的位置就是length。每當(dāng)在末尾添加一項(xiàng)后,其length都會(huì)自動(dòng)更新以反應(yīng)這一變化。

檢測(cè)數(shù)組

對(duì)于單一的全局作用域,也就是對(duì)于有一個(gè)網(wǎng)頁(yè)或者一個(gè)全局作用域而言,使用instanceof操作符
if (value instanceof Array){//對(duì)數(shù)組執(zhí)行某些操作}

對(duì)于兩個(gè)以上不同的執(zhí)行環(huán)境,也就是如果網(wǎng)頁(yè)中包含多個(gè)模板。從而存在兩個(gè)以上不同版本的Array構(gòu)造函數(shù)。如果你從一個(gè)框架向另一個(gè)框架傳入一個(gè)數(shù)組,那么傳入的數(shù)組與在第二個(gè)框架中原生創(chuàng)建的數(shù)組分別具有各自不同的構(gòu)造函數(shù)。為解決這個(gè)問(wèn)題ECMAScript5新增了Array.isArray()方法。這個(gè)方法不管數(shù)組是在哪個(gè)全局執(zhí)行環(huán)境中創(chuàng)建的,都可以確定某個(gè)值是不是數(shù)組。
if(Array.isArray(value)){//對(duì)數(shù)組執(zhí)行某些操作};

支持Array.isArray()的方法瀏覽器有IE9+、Firefox4+、Safari5+、Opera 10.5、和Chrome。

var colors = ["red","blue","green"]; 
if(Array.isArray(colors)){
  colors[0] = "balck";
  alert(colors[0]);
}
轉(zhuǎn)換方法

所有對(duì)象都具有toLocaleString()、toString()和valueOf()方法

調(diào)用數(shù)組的toString()方法:返回由數(shù)組中 "每個(gè)值的字符串" 形式 "拼接" 而成的一個(gè)以逗號(hào)分割的 "字符串" 。

調(diào)用數(shù)組的valueOf()方法:返回的還是數(shù)組。

var aqiData = [
  ["北京", 90],
  ["上海", 50],
  ["福州", 10],
  ["廣州", 50],
  ["成都", 90],
  ["西安", 100]
];
alert(aqiData.toString());
alert(aqiData.valueOf());
alert(aqiData);
console.log(aqiData.toString());
console.log(aqiData.valueOf());
console.log(aqiData);

上面第9、10行代碼先顯式調(diào)用了toString()方法和valueOf()方法。第11行直接將數(shù)組傳遞給alert()。而alert()要接收字符串參數(shù),所以它會(huì)在后臺(tái)調(diào)用數(shù)組每一項(xiàng)的toString()方法。由此得到與直接調(diào)用toString()方法相同的結(jié)果。

調(diào)用數(shù)組的 toLocaleString()方法時(shí),它也會(huì)創(chuàng)建一個(gè)由數(shù)組中 "每個(gè)值的字符串" 形式 "拼接" 而成的一個(gè)以逗號(hào)分割的 "字符串" ,與前面兩個(gè)方法唯一不同之處在于取數(shù)組每一項(xiàng)的值調(diào)用的方法不一樣,這里取數(shù)組每一項(xiàng)值調(diào)用的是每一項(xiàng)的toLocaleString()方法,而不是toString()方法,前面講的是調(diào)用每一項(xiàng)的toString()方法。

var person1 = {
  toLocaleString : function(){
    return  "chenglong";
  },
  toString : function(){
    return  "lixiaolong";
  }
};
var person2 = {
  toLocaleString : function(){
    return  "lilianjie";
  },
  toString : function(){
    return  "chenzhen";
  }
};
var people = [person1,person2];
alert(people.toString());
alert(people);
alert(people.toLocaleString());
console.log(people.toString());
console.log(people);
console.log(people.toLocaleString());

join()指定分割符連接數(shù)組元素。只接受一個(gè)參數(shù),即用作分割符的字符串,返回包含所有數(shù)組項(xiàng)的字符串。如果不給join()傳入任何值或傳入undefined,則使用逗號(hào)作為分割符.而IE7或更早的版本會(huì)錯(cuò)誤的使用undefined作為分割符。

如果數(shù)組中的某一項(xiàng)值是null或undefined,那么該值在join(),toString(),valueOf()和toLocaleString()方法返回的結(jié)果中以空字符串表示。

棧方法

ECMAScript也提供了一種讓數(shù)組的行為類(lèi)似于其他數(shù)據(jù)結(jié)構(gòu)的方法,具體說(shuō)來(lái),數(shù)組可以表現(xiàn)的就像棧一樣。棧是一種LIFO(后進(jìn)先出)的數(shù)據(jù)結(jié)構(gòu)。棧中項(xiàng)的插入和移除只發(fā)生在一個(gè)位置——棧的頂部。ECMAScript為數(shù)組提供了push()和pop()方法實(shí)現(xiàn)類(lèi)似棧的行為。

push()方法,可以接收任意數(shù)量的參數(shù),把他們逐個(gè)添加到數(shù)組的末尾,并返回修改后數(shù)組的長(zhǎng)度

pop()方法,從數(shù)組的末尾移除最后一項(xiàng),減少數(shù)組的length值,返回移除的項(xiàng)。

var colors = [];
var count = colors.push("red","green");
alert(count);//2
var item = colors.pop();
alert(item);//green
alert(colors.length);//1
隊(duì)列方法

棧數(shù)據(jù)結(jié)構(gòu)的訪問(wèn)規(guī)則是LIFO(后進(jìn)先出),而另一種數(shù)據(jù)結(jié)構(gòu)——隊(duì)列數(shù)據(jù)結(jié)構(gòu),訪問(wèn)規(guī)則是FIFO(先進(jìn)先出)。隊(duì)列在列表的末端添加項(xiàng),從列表的前端移除項(xiàng)。末端添加項(xiàng)依舊使用push()方法,shift()方法可以移除數(shù)組的第一項(xiàng),并返回該項(xiàng),同時(shí)將數(shù)組長(zhǎng)度減1.

結(jié)合push()方法和shift()方法可以像使用隊(duì)列一樣使用數(shù)組。

var colors = [];
var count = colors.push("red","green");
alert(count);//2
var item = colors.shift();
alert(item);//red
alert(colors.length);//1

ECMAScript還為數(shù)組提供了unshift()方法,unshift()與shift()作用相反,unshift()是在數(shù)組的前端添加任意多個(gè)項(xiàng)并返回新數(shù)組的長(zhǎng)度。因此,同時(shí)使用unshitf()和pop()方法,可以從相反的方向模擬隊(duì)列。

var colors = [];
var count = colors.unshift("red","green");
alert(count);//2
count = colors.unshift("black");
var item = colors.pop();
alert(item);//green
alert(colors.length);//2

注:IE7及更早版本unshift()會(huì)返回undefined而不是數(shù)組的心長(zhǎng)度。IE8只在非兼容模式下返回正確的長(zhǎng)度。

重排序方法

數(shù)組中有兩個(gè)可以排序的方法,reverse()和sort()。

reverse()會(huì)反轉(zhuǎn)數(shù)組項(xiàng)的順序。

var values = [1,3,5,2,4];
values.reverse();
alert(values); //4,2,5,3,1

默認(rèn)情況下sort()會(huì)按升序排列數(shù)組項(xiàng),但此升序非彼升序

為了實(shí)現(xiàn)排序,sort()會(huì)調(diào)用每個(gè)數(shù)組項(xiàng)的toString()轉(zhuǎn)換方法,然后比較得到的字符串,以確定如何排序。

var value = [0,1,5,10,15];
value.sort();
alert(value);//0,1,10,15,5

sort()方法比較的是字符串,字符串比較,"10"位與"5"前面。sort()方法還可以接收一個(gè)比較函數(shù)作為參數(shù),可實(shí)現(xiàn)我們期望的排序。

比較函數(shù)接收兩個(gè)參數(shù),如果第一個(gè)參數(shù)應(yīng)該位于第二個(gè)參數(shù)之前則返回負(fù)數(shù),如果兩個(gè)參數(shù)相等則返回零,如果第一個(gè)參數(shù)應(yīng)該位于第二個(gè)參數(shù)之后則返回正數(shù)。以下就是一個(gè)比較函數(shù)。

  var myArray = [0,10,5,15,1];
  function compare(value1,value2){
    if (value1value2) {
      return 1;
    }else {
      return 0;
    }
  };
  myArray.sort(compare);
  alert(myArray);//0,1,5,10,15

reverse()和sort()返回的是排序后的數(shù)組

操作方法

concat()方法,可以基于當(dāng)前數(shù)組中的所有項(xiàng)創(chuàng)建一個(gè)新數(shù)組。具體說(shuō),這個(gè)方法會(huì)先創(chuàng)建當(dāng)前數(shù)組的一個(gè)副本,然后將接收到的參數(shù)添加到這個(gè)副本的末尾,最后返回新構(gòu)建的數(shù)組。1, 在沒(méi)有給concat()方法添加參數(shù)的情況下,他只是復(fù)制當(dāng)前數(shù)組并返回副本。2, 如果傳遞給concat()方法的是一個(gè)多個(gè)數(shù)組,則該方法會(huì)將這些數(shù)組中的每一項(xiàng)添加到結(jié)果數(shù)組中。3, 如果給concat()方法傳遞的不是數(shù)組,這些值會(huì)被簡(jiǎn)單的添加到結(jié)果數(shù)組的末尾。原來(lái)的數(shù)組colors(),保持不變

  var colors = ["red","blue"];
  var newColors = colors.concat("black",["yellow","brown"],["green"]);
  alert(colors);//red,blue
  alert(newColors);//red,blue,black,yellow,brown,green

slice()方法,基于當(dāng)前數(shù)組的一個(gè)或多個(gè)項(xiàng)創(chuàng)建一個(gè)新數(shù)組。slice()方法接收一個(gè)或兩個(gè)參數(shù),同concal()方法一樣,原來(lái)的數(shù)組不會(huì)被影響。注意,如果slice()參數(shù)中有一個(gè)是負(fù)數(shù),則用數(shù)組長(zhǎng)度加上該數(shù)來(lái)確定相應(yīng)位置。例一個(gè)包含5項(xiàng)的數(shù)組,slice(-2,-1)即slice(3,4)。如果結(jié)束位置小于起始位置,則返回空數(shù)組。

splice()方法,這個(gè)方法算是最強(qiáng)大的數(shù)組方法了。splice()方法的主要用途是向數(shù)組的中部插入項(xiàng)。使用的方式有如下3種。

1, 刪除,可以刪除任意數(shù)量的項(xiàng),只需指定2個(gè)參數(shù),要?jiǎng)h除的第一項(xiàng)的位置和要?jiǎng)h除的項(xiàng)數(shù)。
2, 插入,可以向指定的位置插入任意數(shù)量的項(xiàng),只需提供3個(gè)參數(shù),起始位置,0(要?jiǎng)h除的項(xiàng)數(shù)),和要插入的項(xiàng)。如果要插入多項(xiàng),可以插入任意多個(gè)項(xiàng)。例,splice(1,0,"red","yellow");
3, 替換,可以向指定的位置插入任意數(shù)量的項(xiàng),插入的項(xiàng)數(shù)不必與刪除的項(xiàng)數(shù)相等,例,splice(2,1,"red","blue");
splice()方法始終都會(huì)返回一個(gè)數(shù)組,該數(shù)組包含從原始數(shù)組中刪除的項(xiàng)(如果沒(méi)有刪除任何項(xiàng),就會(huì)返回一個(gè)空數(shù)組)。splice()會(huì)改變?cè)紨?shù)組。

var colors = ["red","blue","green"];
var colors2 = colors.splice(1,2);
alert(colors2);//blue,green
var colors3 = colors.splice(0,0,"black",["brown"]);
alert(colors3);//[]
alert(colors);//black,brown,red
console.log(colors3);
var colors4 = colors.splice(1,1,"yellow","purple");
alert(colors4);//brown
alert(colors);//black,yellow,purple,red
位置方法

indexOf()和lastIndexOf()方法。都接收兩個(gè)參數(shù),要查找的項(xiàng)和查找起點(diǎn)位置的索引(可選)。indexOf()從數(shù)組的0位置開(kāi)始向后查,lastIndexOf()從數(shù)組的末尾開(kāi)始向前查找。都返回要查找的項(xiàng)在數(shù)組中的位置。沒(méi)有找到的情況下返回-1,在比較第一個(gè)參數(shù)與數(shù)組中的項(xiàng)時(shí),使用全等操作符(必須嚴(yán)格相等)。支持這兩種方法的瀏覽器有IE9+,fireFox2+,Safari3+,Opera9.5+,Chrome。

  var person = {name:"Nicholas"};
  var people = [{name:"Nicholas"}];
  var morePeople  = [person];
  alert(people.indexOf(person));//-1
  alert(morePeople.indexOf(person));//0
  alert(morePeople.indexOf({name:"Nicholas"}));//-1
  console.log(morePeople);//[Object]
迭代方法

ECMAScript為數(shù)組定義了5個(gè)迭代方法。每個(gè)方法都接收兩個(gè)參數(shù),要在每一項(xiàng)上運(yùn)行的函數(shù)和運(yùn)行該函數(shù)的作用域?qū)ο蟆绊憈his的值(可選)。傳入這些方法的函數(shù)會(huì)接收三個(gè)參數(shù):數(shù)組項(xiàng)的值、該項(xiàng)在數(shù)組中的位置和數(shù)組對(duì)象本身。根據(jù)使用的方法不同,這個(gè)函數(shù)執(zhí)行后的返回值可能會(huì)也可能不會(huì)影響訪問(wèn)的返回值。

every():對(duì)數(shù)組中的每一項(xiàng)運(yùn)行給定的函數(shù),如果該函數(shù)對(duì)每一項(xiàng)都返回true,則返回 true.

filter():對(duì)數(shù)組的每一項(xiàng)都運(yùn)行給定數(shù)組,返回 該函數(shù)會(huì)返回true的項(xiàng) 組成的數(shù)組。

forEach():對(duì)數(shù)組的每一項(xiàng)運(yùn)行給定的函數(shù),這個(gè)方法沒(méi)有返回值。

map():對(duì)數(shù)組每一項(xiàng)運(yùn)行給定函數(shù),返回 每次函數(shù)調(diào)用的結(jié)果 組成的數(shù)組。

some():對(duì)數(shù)組中的每一項(xiàng)運(yùn)行給定的數(shù)組,如果該函數(shù)對(duì)任一項(xiàng)返回true,則返回true.

  var numbers = [1,2,3,4,5,4,3,2,1];
  var everyResult = numbers.every(function(item,index,array){
    console.log(item);      
    return item > 2;
  });
  var someResult = numbers.some(function(item,index,array){
    console.log("someResult"+item);  
    return item > 2;
  });
  alert(everyResult);
  alert(someResult);
  var aqiData = [
  ["北京", 90],
  ["上海", 50],
  ["福州", 10],
  ["廣州", 50],
  ["成都", 90],
  ["西安", 100]
];
  var filterResult = aqiData.filter(function(item,index,array){
    //console.log(item[1]);
    return item[1] > 60;
  });
  alert(filterResult);
  
  var numbers = [1,2,3,4,5,4,3,2,1];
  numbers.forEach(function(item,index,array){
    if (item>3) {
      alert(item);
    }
  });

支持這些迭代方法的瀏覽器有IE9+、FireFox2+、Safari3+、Opera9.5+、Chrome

縮小方法

ECNAScript還增加了兩個(gè)縮小方法,reduce()和reduceRight().這兩個(gè)方法都會(huì)迭代數(shù)組的所有項(xiàng),然后構(gòu)建一個(gè)最終返回的值。其中reduce()從數(shù)組的第一項(xiàng)開(kāi)始,逐個(gè)遍歷到最后,而reduceRight()從數(shù)組的最后一項(xiàng)開(kāi)始,向前遍歷到第一項(xiàng)。

這兩個(gè)方法都接收兩個(gè)參數(shù):一個(gè)在每一項(xiàng)上調(diào)用的函數(shù)和最為縮小基礎(chǔ)的初始值(可選),傳遞給他們的函數(shù)接收4個(gè)參數(shù):前一個(gè)值,當(dāng)前值,項(xiàng)的索引和當(dāng)前對(duì)象。

這個(gè)函數(shù)返回的任何值都會(huì)最為第一個(gè)參數(shù)自動(dòng)傳給下一項(xiàng)。第一次迭代發(fā)生在數(shù)組的第二項(xiàng)上,因此第一參數(shù)就是數(shù)組的第一項(xiàng),第二個(gè)參數(shù)就是數(shù)組的第二項(xiàng)。
//執(zhí)行數(shù)組中所有值之和的操作

var values = [1,2,3,4,5];
var sum = values.reduce(function(prev,cur,index,array){
  return prev+cur;
});
  alert(sum);//15

第一次訪問(wèn)函數(shù),prev是1,cur是2;第二次,prev是3(1+2結(jié)果),cur是3(數(shù)組第三項(xiàng))
支持這些迭代方法的瀏覽器有IE9+、FireFox3+、Safari4+、Opera10.5+、Chrome

參考:JS高級(jí)程序設(shè)計(jì)

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/82508.html

相關(guān)文章

  • 讀書(shū)筆記】你不知道的JavaScript--內(nèi)置類(lèi)型

    摘要:有種內(nèi)置類(lèi)型,分別是除對(duì)象之外,其他統(tǒng)稱(chēng)為基本類(lèi)型。另一個(gè)需要注意的是數(shù)組確切地說(shuō),數(shù)組也是的一個(gè)子類(lèi)型我們可以通過(guò)下面的方法檢查變量是不是數(shù)組處理未聲明的變量時(shí),會(huì)返回這是因?yàn)橛幸粋€(gè)特殊的安全防范機(jī)制。 js有7種內(nèi)置類(lèi)型,分別是undefined null boolean string number symbol object除對(duì)象之 Object 外,其他統(tǒng)稱(chēng)為基本類(lèi)型。符號(hào) ...

    Integ 評(píng)論0 收藏0
  • 讀書(shū)筆記JavaScript類(lèi)型

    摘要:函數(shù)類(lèi)型檢測(cè)是的子類(lèi)型,其屬性為參數(shù)個(gè)數(shù),但是判斷結(jié)果有內(nèi)建函數(shù)原生函數(shù)常見(jiàn)的有,可能被當(dāng)作構(gòu)造函數(shù)來(lái)使用,創(chuàng)建出來(lái)的是封裝了的基本類(lèi)型值。構(gòu)造函數(shù)可以不帶關(guān)鍵字。建議使用和來(lái)進(jìn)行顯示強(qiáng)制轉(zhuǎn)換。 前言 此篇小結(jié)來(lái)源與《你不知道的JavaScript》和《JavaScript高級(jí)程序設(shè)計(jì)》的結(jié)合??或許是的,龜速總結(jié)中... 七種內(nèi)置類(lèi)型 null undefined boolean ...

    cjie 評(píng)論0 收藏0
  • 《精通JavaScript讀書(shū)筆記

    摘要:使用構(gòu)造函數(shù)屬性來(lái)判斷對(duì)象的類(lèi)型檢查數(shù)字實(shí)際上是否為字符串如果是,則把字符串解析為整數(shù)檢查字符串實(shí)際上是否為數(shù)組如果是,則根據(jù)數(shù)組用逗號(hào)歸并出字符串來(lái)變量的類(lèi)型檢查變量變量變量構(gòu)造函數(shù)用閉包實(shí)現(xiàn)的函數(shù)化數(shù)字求和函數(shù)的函數(shù)生成器返回一個(gè)簡(jiǎn)單的 showImg(https://segmentfault.com/img/remote/1460000006766748?w=3456&h=460...

    ityouknow 評(píng)論0 收藏0
  • 讀書(shū)筆記(02) - 可維護(hù)性 - JavaScript高級(jí)程序設(shè)計(jì)

    摘要:解耦優(yōu)勢(shì)代碼復(fù)用,單元測(cè)試。常用比較誤區(qū)可同時(shí)判斷,可用來(lái)判斷對(duì)象屬性是否存在。使用作判斷無(wú)法進(jìn)行充分的類(lèi)型檢查。文件中應(yīng)用常量參考文檔高級(jí)程序設(shè)計(jì)作者以樂(lè)之名本文原創(chuàng),有不當(dāng)?shù)牡胤綒g迎指出。 showImg(https://segmentfault.com/img/bVburXw?w=500&h=400); 編寫(xiě)可維護(hù)性代碼 可維護(hù)的代碼遵循原則: 可理解性 (方便他人理解) 直觀...

    k00baa 評(píng)論0 收藏0
  • 讀書(shū)筆記(03) - 性能 - JavaScript高級(jí)程序設(shè)計(jì)

    摘要:作用域鏈查找作用域鏈的查找是逐層向上查找。而全局變量和閉包則會(huì)與之相反,繼續(xù)保存,所以使用用后需手動(dòng)標(biāo)記清除,以免造成內(nèi)存泄漏。獲取元素的屬性獲取元素的屬性等參考文檔高級(jí)程序設(shè)計(jì)作者以樂(lè)之名本文原創(chuàng),有不當(dāng)?shù)牡胤綒g迎指出。 showImg(https://segmentfault.com/img/bVburXV?w=500&h=399); 作用域鏈查找 作用域鏈的查找是逐層向上查找。查...

    warnerwu 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<