做爰高潮a片〈毛片〉,尤物av天堂一区二区在线观看,一本久久A久久精品VR综合,添女人荫蒂全部过程av

最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
當前位置: 首頁 - 科技 - 知識百科 - 正文

JS解惑之Object中的key是有序的么

來源:懂視網 責編:小采 時間:2020-11-27 21:57:35
文檔

JS解惑之Object中的key是有序的么

JS解惑之Object中的key是有序的么:當我們使用for/in遍歷一個Object對象的時候,打印的結果是否按key的順序打印出來呢? 答案是:不一定。 背景 最近在做一個項目的時候,遇到這樣一個需求: 一個下拉列表中有3個固定選項,包括:-1:全部;0:正常;1:失效。 于是,我就定義了一個對象
推薦度:
導讀JS解惑之Object中的key是有序的么:當我們使用for/in遍歷一個Object對象的時候,打印的結果是否按key的順序打印出來呢? 答案是:不一定。 背景 最近在做一個項目的時候,遇到這樣一個需求: 一個下拉列表中有3個固定選項,包括:-1:全部;0:正常;1:失效。 于是,我就定義了一個對象

當我們使用for/in遍歷一個Object對象的時候,打印的結果是否按key的順序打印出來呢?

答案是:不一定。

背景

最近在做一個項目的時候,遇到這樣一個需求:

一個下拉列表中有3個固定選項,包括:-1:全部;0:正常;1:失效。

于是,我就定義了一個對象,然后循環這個對象,把結果放到 <option> 上面:

var obj = {
 '-1': '全部',
 '0' : '正常',
 '1' : '失效'
};
<!-- Vue代碼片段 -->
<select>
 <option v-for="(item, key) in obj" :value="key">{{item}}</option>
</select>

<!-- 結果卻是: -->
<!-- 0 正常 -->
<!-- 1 失效 -->
<!-- -1 全部 -->

于是就有了今天這篇文章,且看下文。

解惑

Object的key的排序規則到底是什么樣子的呢?答案是:

如果key是整數(如:123)或者整數類型的字符串(如:“123”),那么會按照從小到大的排序。除此之外,其它數據類型,都安裝對象key的實際創建順序排序。

var obj = {
 '-1': '全部',
 '0' : '正常',
 '1' : '失效'
};
for (let key in obj) {
 console.log(key, obj[key]);
};
// result
// 0 正常
// 1 失效
// -1 全部

另外,如果key中除了整數或者整數類型的字符串外,還含有其它數據類型,則整數放在最前面,比如:

var obj = {
 'a': 111,
 '我' : 222,
 '1' : 333,
 '1.3': 444,
 '3': 555
};
for (let key in obj) {
 console.log(key, obj[key]);
};
// result
// 1 333
// 3 555
// a 111
// 我 222
// 1.3 444

解決

那還是上面的問題,我如何讓對象按key的順序輸出呢?答案是:

將key轉換成非整數類型的字符串,使用的時候再還原。

如果全部是類整數的key,則可以這么做:

// 每個key后面加.轉換成字符串
var obj = {
 '-1.': '全部',
 '0.' : '正常',
 '1.' : '失效'
};
for (let key in obj) {
 // ~~ 表示轉換成整數,這樣上面的key又還原成了-1/0/1
 console.log(~~key, obj[key]);
};
// result
// -1 全部
// 0 正常
// 1 失效

但是,如果key是由各種數據類型混合的,那就不能轉換成整數了,可以這么做:

// 每個key前面加.轉換成字符串
var obj = {
 '.a': 111,
 '.我' : 222,
 '.1' : 333,
 '.1.3': 444,
 '.3': 555
};
for (let key in obj) {
 // 從第1個字符取原始的key
 console.log(key.substring(1), obj[key]);
};
// result
// a 111
// 我 222
// 1 333
// 1.3 444
// 3 555

最后

回歸到我最初遇到的問題,那就這么解決了:

var obj = {
 '-1.': '全部',
 '0.' : '正常',
 '1.' : '失效'
};
<select>
 <option v-for="(item, key) in obj" :value="~~key">{{item}}</option>
</select>

參考

Objects#ordered-like-an-object

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文檔

JS解惑之Object中的key是有序的么

JS解惑之Object中的key是有序的么:當我們使用for/in遍歷一個Object對象的時候,打印的結果是否按key的順序打印出來呢? 答案是:不一定。 背景 最近在做一個項目的時候,遇到這樣一個需求: 一個下拉列表中有3個固定選項,包括:-1:全部;0:正常;1:失效。 于是,我就定義了一個對象
推薦度:
標簽: js 序的 key
  • 熱門焦點

最新推薦

猜你喜歡

熱門推薦

專題
Top
主站蜘蛛池模板: 得荣县| 将乐县| 安西县| 和田市| 广州市| 灌阳县| 于都县| 梅州市| 北京市| 方城县| 横山县| 历史| 新干县| 台州市| 怀化市| 泸西县| 晋州市| 临漳县| 泰和县| 呼伦贝尔市| 洪湖市| 壤塘县| 札达县| 吉隆县| 张北县| 东乌| 临洮县| 新乡县| 宜城市| 铁岭市| 云林县| 若尔盖县| 白沙| 建水县| 如东县| 平乡县| 阳原县| 庄浪县| 漳平市| 宁晋县| 卫辉市|