簡體   English   中英

從其他對象返回匹配鍵的值列表。 (兩個對象的交集)

[英]Return the list of value of matching key from other object. (Intersection of two objects)

const validValuesByDataType: any = {
    [DataTypes.STRING]: [
        ValueType.CALL,
        ValueType.PUT,
    ],
    ...
}

const values: any = {
    [ ValueType.CALL ]: {value: 'call', label: 'CALL'}, 
    [ ValueType.PUT ]: {value: 'put', label: 'PUT'},
    ...
}

我想根據數據類型獲取有效值。 哪個是['call', 'put']

const valueMap = validValuesByDataType[fieldType];
valueMap.map((o: any) => values[o].value); => I got "call" and "put" printing.

如何獲取值的數組? 我想要某種形式的東西。

[ ...values.concat[type] ]

如果您有任何其他更好的結構,任何幫助將不勝感激。

另外,我在定義每個對象的類型時遇到了麻煩。 請隨意添加任何評論!

如果您使用的是足夠新的 javascript 版本,那么Array.prototype.flatMap會使您的值映射變得容易。

function test(fieldType: DataTypes) {
    const valueMap = validValuesByDataType[fieldType];
    valueMap.flatMap(o => values[o].value);
}

ValueTypeDataType好像是枚舉,可以作為一個類型使用。 打字稿類型Record描述了一個對象,其中所有鍵都是一種類型,所有值都是另一種類型。 這就是我們將用於查找對象的內容。

const validValuesByDataType: Record<DataTypes, ValueType[]>

const values: Record<ValueType, {value: stringlabel: string;}>

打字稿游樂場鏈接

枚舉完全沒有問題,但由於您詢問了其他結構,替代方法是將您的值類型和數據類型定義為字符串文字。

其中任何一個都具有相同的效果:

const valueTypes = ['CALL', 'PUT'] as const;

type ValueType = typeof valueTypes[number]; // evaluates to "CALL" | "PUT"

關聯

type ValueType = "CALL" | "PUT";

const valueTypes: ValueType[] = ['CALL', 'PUT'];

關聯

暫無
暫無

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

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