簡體   English   中英

如何創建JavaScript數據類型(通過鍵和索引訪問)

[英]How can I create a javascript data type (accessed with key and index)

我想在JavaScript中創建一個可以同時通過索引和鍵訪問的數據類型或對象,並且我還需要一個length屬性來顯示該數據類型中有多少項。 有點像MyDataType[0].name="John" MyDataType[0].salary="over 1k"

因此,如果我寫了: MyDataType['John'].salary //I should get "over 1k"

如果我寫了: MyDataType[0].salary //I should get also "over 1k"

我想擁有: MyDataType.length //should return 1

這可能嗎? 我嘗試使用Proxy,它對於索引/鍵部分非常有效,但是它沒有length屬性。 我嘗試使用數組,它具有索引和長度,但是沒有鍵訪問

謝謝大家,請幫助我

對於像我一樣掙扎的任何人,我終於找到了答案,在此感謝@ Quickredfoxhttps : //stackoverflow.com/a/36511465/8816810

那就是代碼:

"use strict";
 var MyCollection = new Proxy(
[{
name: 'monkey',
 score: 50
}, {
    name: 'giraffe',
 score: 100
}, {
name: 'pelican',
score: 150
}, {
    name: 'ZZoo',
  score: 69
}], {
 get: function(obj, prop) {
  if (prop in obj) {
    // default behavior
    return obj[prop];
  }
  if (typeof prop == 'string') {

      if (prop == 'length') {
      return obj.sort(function(a, b) {
        return obj.length;
      });
    }    

   for (var i = 0; i < obj.length; i++) {
      var player = obj[i];
      if (player.name == prop) {
        return player;
      }
    }

    return;
  }

}
});

document.write(MyCollection.length);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM