我一直在四處搜索,在大多數論壇中,對這個問題的回答或多或少是沒有必要將變數轉換為字串。但是,鑒于以下情況,我該如何解決問題?
我有一個物件categories如下:
const categories = {
1: ctgOne,
2: ctgTwo,
3: ctgThree,
4: ctgFour,
};
這些類別對應于包含一些任意資料的物件:
const ctgOne = {
test1: ["blah", "blah", "blah"],
test2: ["blah", "blah", "blah"],
};
const ctgTwo = {
test1: ["blah", "blah", "blah"],
test2: ["blah", "blah", "blah"],
test3: ["blah", "blah", "blah"],
};
const ctgThree = {
test1: ["blah", "blah", "blah"],
test3: ["blah", "blah", "blah"],
};
const ctgFour = {
test2: ["blah", "blah", "blah"],
test3: ["blah", "blah", "blah"],
};
我有另一個物件categoryList,其中包含與陣列中每個類別相關的一些數字:
const categoryList = {
ctgOne: [1, 3, 5, 8, 13],
ctgTwo: [23, 4, 78],
ctgThree: [12, 33, 54, 8, 13, 12, 45],
ctgFour: [1, 35, 5, 2],
};
console.log(count);當我運行以下腳本時,由于明顯的原因,我收到第二個錯誤,因為在count = categoryList[categoryName].length;“categoryName”中必須是一個字串。但是,如果我將categories物件中的類別轉換為字串,console.log(keys);則給出字串的長度而不是物件中的鍵數。
let categoryNumber = 1;
let categoryName = categories[categoryNumber];
let keys = Object.keys(categoryName).length;
console.log(keys);
count = categoryList[categoryName].length;
console.log(count);
解決這一困境的最佳方法是什么?我想計算物件中的鍵數以及categoryList.
uj5u.com熱心網友回復:
您不會將變數名稱作為字串。充其量,你會反過來做,但實際上你永遠不應該關心變數名作為資料。您可以(并且應該)在物件中行內這 4 個const變數。categories
要從另一個物件獲取相應的值,請在和中使用相同的鍵。也就是說,要么categoriescategoryList
const categories = {
ctgOne: { test1: …, test2: …},
ctgTwo: { test1: …, test2: …, test3: …},
ctgThree: { test1: …, test3: …},
ctgFour: { test2: …, test3: …},
};
const categoryList = {
ctgOne: [1, 3, 5, 8, 13],
ctgTwo: [23, 4, 78],
ctgThree: [12, 33, 54, 8, 13, 12, 45],
ctgFour: [1, 35, 5, 2],
};
或者
const categories = {
1: { test1: …, test2: …},
2: { test1: …, test2: …, test3: …},
3: { test1: …, test3: …},
4: { test2: …, test3: …},
};
const categoryList = {
1: [1, 3, 5, 8, 13],
2: [23, 4, 78],
3: [12, 33, 54, 8, 13, 12, 45],
4: [1, 35, 5, 2],
};
但不是它們的混合。如果你真的需要他們兩個,你就離不開一個單獨的映射表。
uj5u.com熱心網友回復:
在您的物件中,為什么不存盤物件名稱,它是一個字串。
在您的 categoryList 中,使用名稱而不是物件作為鍵。
例如,
const ctgOne = {
name: "Category 1",
test1: ...,
test2: ...
}
const ctgTwo = {
name: "Category 2",
test1: ...,
test2: ...
}
const categoryList = {
"Category 1": [1, 3, 5, 8, 13],
"Category 2": [23, 4, 78],
}
然后你可以做
let categoryNumber = 1;
let category = categories[category];
let categoryName = category.name;
let keys = Object.keys(category).length;
console.log(keys);
count = categoryList[categoryName].length;
console.log(count);
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/420525.html
標籤:
上一篇:如何使用來自2個網路呼叫Swift的資料創建一個物件或陣列
下一篇:如何在Swing中重疊面板?
