我有一個utils/constant.js檔案:
// Key of total elements in remote collection
export const TOTAL_ELEMENTS = "totalElements";
我需要totalElements通過常量訪問。
import { TOTAL_ELEMENTS } from "./constants.js";
[...]
let data = {
content: "foo",
totalElements: 54
};
if(TOTAL_ELEMENTS in data) {
// pseudocode, of course it doesn't work.
// of course in my case need to return 54
const { TOTAL_ELEMENTS } = data;
return TOTAL_ELEMENTS;
}
uj5u.com熱心網友回復:
編輯:
正如@pilchard提到的,Object.prototype.hasOwnProperty如果值是假的,使用是一種更好的方法:
if (data.hasOwnProperty(TOTAL_ELEMENTS)) {
return data[TOTAL_ELEMENTS]
}
原始答案:
雖然@jsN00b提供的答案有效并且更接近OP 的@sineverba代碼,但這里存在一個問題,因為in操作員會檢查指定物件及其原型鏈中的指定屬性。
這意味著,例如,如果datas 原型是Object.prototype,類似的東西'toString' in data也會起作用。
出于這個原因,您可以使用類似以下的內容來僅檢查'totalElements'物件本身中的鍵,并避免解構:
if (data[TOTAL_ELEMENTS]) {
return data[TOTAL_ELEMENTS]
}
uj5u.com熱心網友回復:
期望的目標是:
- 使用常量
TOTAL_ELEMENTS(而不是直接使用道具名稱) - 檢查是否
data有對應的道具 - 如果找到,則回傳道具的值
以下代碼示例可能是實作預期目標的一種解決方案:
if (TOTAL_ELEMENTS in data) return data[TOTAL_ELEMENTS];
注意
以上不de-structure包含資料。它直接訪問相應的道具,無需解構。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/441526.html
標籤:javascript
上一篇:JS更改JSON值以匹配鍵
下一篇:在Dropdown中動態添加選項
