我剛剛搜索了 SO,看起來每個人都同意 JavaScript 和 TypeScript 不支持直接使用數字作為物件中的鍵的想法。但不知何故,我的開發伙伴在我們的 Angular 專案中使用了一些帶有數字鍵的物件,這些物件與其他物件一樣作業得很好。這就是他們的樣子。
{
1: 1,
2: 0,
3: 2
}
并且以類似的形式呼叫該值obj[2]目前沒有問題。只是想知道這是否是正確的方法,以及這種用法的支持情況如何?
uj5u.com熱心網友回復:
它很好,就像在 - 它的合法性一樣,因為它是如何作業的,盡管需要注意的一件事是陣列將確保鍵是增量的,從 0 開始,而物件中的數字鍵不會,并且會產生誤導對于其他開發人員,當他們無法理解為什么 obj[1] 并不總是位于 obj[2] 等旁邊時,我的意思是使用內回圈等,并且每次只將索引增加 1。所以,我個人不推薦它,因為它看起來像一個陣列,但它實際上不是一個陣列......
側面 - 如果您試圖模擬一個陣列,但想要一個從 1 開始的索引,只需像往常一樣使用一個陣列,并讓您的代碼每次只處理偏移量。陣列配備了許多功能,如length,sort,find等一個物件不會
uj5u.com熱心網友回復:
在javascript中物件的鍵是字串型別,如果你有obj[1]它會自動變成obj['1']但不一樣Map
const obj = {}
obj[1] = 'one';
console.log(obj[1]);
// output: "one"
console.log(obj['1']);
// output: "one"
obj['1'] = 'one string';
console.log(obj[1]);
// output: "one string"
console.log(obj['1']);
// output: "one string"
const map = new Map();
map.set(1, 'one');
map.set('1', 'one string');
console.log(map.get(1));
// output: "one"
console.log(map.get('1'));
// output: "one string"
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/392338.html
標籤:javascript 有角的 打字稿
下一篇:Angular-“OperatorFunction<IUser,void>”型別的引數不可分配給“OperatorFunction<Object,void>”型別的引數
