簡體   English   中英

JavaScript 中帶有對象鍵的數組

[英]Array with object keys in JavaScript

如何使用鍵作為對象(類的實例)創建數組?

我正在嘗試執行以下操作:

const parent = {};

while (child !== undefined) {
    for (const element of list) {
        parent[element] = child;
    }
    child = child.next;
}

這基本上就是這個想法; 如果元素是字符串,則代碼有效,但如果元素是對象,則代碼無法正常工作。

如果您在 ES2015 環境中,則可以使用Map

它看起來像這樣:

let parent = new Map();
while (child !== undefined) {
    for (const element of list) {
        parent.set(element, child);
    }
    child = child.next;
}

您可以在此代碼筆中運行以下證明

let parent = new Map();
const KEY1 = {};
parent.set(KEY1, 'hello');
console.log(parent.get(KEY1)); // hello

const KEY2 = {};
parent.set(KEY2, 'world');
console.log(parent.get(KEY2));

parent.set('est', {a: 'a'});
console.log(parent.get('est'));

或者將其作為堆棧片段查看

 (function($) { const ELEMENTS = { $h1: $('#hello'), $container: $('#container') }; let parent = new Map(); const KEY1 = {}; parent.set(KEY1, 'hello'); console.log(parent.get(KEY1)); // hello const KEY2 = {}; parent.set(KEY2, 'world'); console.log(parent.get(KEY2)); parent.set('est', { a: 'a' }); console.log(parent.get('est')); /** original code from question w Map **/ var list = []; // to prevent error let parenta = new Map(); let child; while (child !== undefined) { for (const element of list) { parenta.set(element, child); } child = child.next; } })(jQuery);
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <h1 class="hello"></h1> <div class="container"></div>

你不能。 .toString()在作為鍵傳遞給對象的任何東西上調用,然后才用作鍵。 這是 Javascript 語言規范的一部分。

但是,如果需要,您可以創建Symbols對象鍵,但 Symbols 僅將字符串作為參數。

這不起作用,因為方法toString()將被調用,為所有項目返回類似[object Object]的東西。

屬性名稱只能是字符串,但它們可以是任何字符串...您可以使用JSON.stringify(element)將對象轉換為字符串,但您將無法像對象一樣使用鍵值,因為它只會是它的代表......

另一個解決方案(也許更好?)是在您的類上使用一個函數來創建對象的字符串表示形式......假設您的對象來自數據庫,您可以使用記錄 ID。 您也可以使用一些隨機字符串來獲得它的價值。

如果我知道您為什么要將對象存儲為開始的關鍵,我將能夠為您提供更好的解決方案。

暫無
暫無

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

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