JavaScript 中如何将变量转换为字符串?
How do you turn a variable into a string in JavaScript?
我一直在搜索,在大多数论坛中,对这个问题的回复或多或少都是不需要将变量转换为字符串。但是,如果出现以下情况,我该如何解决问题?
我有一个对象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
.
中的数字
在你的对象中,为什么不存储对象名称,它是一个字符串。
在您的类别列表中,使用名称而不是对象作为键。
例如,
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);
您不会将变量名称作为字符串。充其量,你会反过来做,但实际上你不应该关心变量名作为数据。您可以(并且应该)在 categories
对象中内联这 4 个 const
变量。
要从其他对象获取相应的值,请在 categories
和 categoryList
中使用 相同的键 。也就是说,要么
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],
};
但不是它们的混合体。如果你真的需要他们两个,你不会离开没有单独的映射 table.
我一直在搜索,在大多数论坛中,对这个问题的回复或多或少都是不需要将变量转换为字符串。但是,如果出现以下情况,我该如何解决问题?
我有一个对象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
.
在你的对象中,为什么不存储对象名称,它是一个字符串。
在您的类别列表中,使用名称而不是对象作为键。
例如,
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);
您不会将变量名称作为字符串。充其量,你会反过来做,但实际上你不应该关心变量名作为数据。您可以(并且应该)在 categories
对象中内联这 4 个 const
变量。
要从其他对象获取相应的值,请在 categories
和 categoryList
中使用 相同的键 。也就是说,要么
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],
};
但不是它们的混合体。如果你真的需要他们两个,你不会离开没有单独的映射 table.