簡體   English   中英

以另一個對象的屬性為鍵的對象

[英]Object with another's object's property as a key

我有一個這樣的對象:var myObj = {action1:0,action2:1,action3:2};

測試函數從該列表中獲取值作為參數,並簡化單元測試,我想在函數內部獲取人類可讀的標簽

function myFunc(someaction, anotheraction, blablabla)
{
    console.log("Action: " + arguments[0] + " then action: " + arguments[1]);
    //some code here
}  

所以在函數內部,我只能看到像0 1 2這樣的值

嘗試解決方法,我嘗試創建這樣的新對象

var dictObj = {myObj.action1:"action1", myObj.action2:"action2", myObj.action3:"action3"}

然后將值解析為函數內部的名稱:

console.log("Action: " + dictObj[arguments[0]] + " then action: " + dictObj[arguments[1]]);

但這並沒有奏效,因為

'Uncaught SyntaxError: Unexpected token .'

如何重新編寫此代碼以獲得可讀的描述?

在ES5和更早版本中,您必須使用一系列語句來創建該對象:

var dictObj = {};
dictObj[myObj.action1] = "action1";
dictObj[myObj.action2] = "action2";
dictObj[myObj.action3] = "action3";

從ES2015(又名“ ES6”)開始,您可以使用對象初始化程序中的計算屬性名稱來代替它:

let dictObj = {
    [myObj.action1]: "action1",
    [myObj.action2]: "action2",
    [myObj.action3]: "action3"
};

您可以使用[]任何表達式來創建屬性名稱。 在這種情況下,這只是一個簡單的屬性查找。

在這兩種情況下,請注意,沒有實時關系。 如果稍后myObj.action1更改為42,則完成上述操作后,它對dictObj的屬性名稱沒有任何影響。

暫無
暫無

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

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