當我們使用for/in遍歷乙個object物件的時候,列印的結果是否按key的順序列印出來呢?
答案是:不一定
。
最近在做乙個專案的時候,遇到這樣乙個需求:
乙個下拉列表中有3個固定選項,包括:-1:全部;0:正常;1:失效
。
於是,我就定義了乙個物件,然後迴圈這個物件,把結果放到上面:
var obj = ;
複製**
v-for="(item, key) in obj"
:value="key">}option>
select>
複製**
於是就有了今天這篇文章,且看下文。
object的key的排序規則到底是什麼樣子的呢?答案是:
如果key是整數(如:123)或者整數型別的字串(如:「123」),那麼會按照從小到大的排序。除此之外,其它資料型別,都安裝物件key的實際建立順序排序。
var obj = ;
for (let key in obj) ;
// result
// 0 正常
// 1 失效
// -1 全部
複製**
另外,如果key中除了整數或者整數型別的字串外,還含有其它資料型別,則整數放在最前面,比如:
var obj = ;
for (let key in obj) ;
// result
// 1 333
// 3 555
// a 111
// 我 222
// 1.3 444
複製**
那還是上面的問題,我如何讓物件按key的順序輸出呢?答案是:
將key轉換成非整數型別的字串,使用的時候再還原。
如果全部是類整數的key,則可以這麼做:
// 每個key後面加.轉換成字串
var obj = ;
for (let key in obj) ;
// result
// -1 全部
// 0 正常
// 1 失效
複製**
但是,如果key是由各種資料型別混合的,那就不能轉換成整數了,可以這麼做:
// 每個key前面加.轉換成字串
var obj = ;
for (let key in obj) ;
// result
// a 111
// 我 222
// 1 333
// 1.3 444
// 3 555
複製**
回歸到我最初遇到的問題,那就這麼解決了:
var obj = ;
複製**
v-for="(item, key) in obj"
:value="~~key">}option>
select>
複製**
js中的Object介紹
object 建構函式,例項不指向建構函式,所以不能呼叫建構函式中的方法,建構函式中也有方法,這些方法就是提供一些工具。靜態方法,類方法 object.assign obj 將obj屬性拷貝到第乙個引數物件中,並且返回 object.keys obj 獲取obj物件中所有屬性 object.defi...
js 中object物件的操作
n object物件 for var p in n 繼之前js中陣列的常用方法之後,object的常用方法和屬性也是很常用的。故,總結之。一 屬性 object自帶乙個prototype的屬性,即object.prototype,object.prototype本身也是乙個物件,也會有一些屬性和方法...
JS中的array和Object的區別
區別 陣列表示有序資料的集合,物件表示無需資料的集合。如果資料順序很重要的話,就用陣列,否則就用物件的好。陣列的資料沒有名稱 name 物件的資料有名稱 name 但是在很多程式語言中有個叫關聯陣列的,這種陣列中的資料是有名稱的。如何區分array和object 1 通過isarray方法 使用方法...