提问人:jondavis4 提问时间:6/30/2023 最后编辑:jondavis4 更新时间:6/30/2023 访问量:88
如何遍历 JavaScript 编号变量?[复制]
how do you loop through javascript numbered variables? [duplicate]
问:
如何遍历 JavaScript 编号变量?
let count = 5;
var test1 = "test1"
var test2 = "test2"
var test3 = "test3"
var test4 = "test4"
var test5 = "test5"
for (let i = 0; i < count; i++)
{
console.log(test{i}); //no that don't work
}
我厌倦了我发现的几个不同的循环,但无法让任何东西工作。 对这一切来说都是新的。
希望看到变量名称... 测试1 测试2 测试3 测试4 测试5
也许我问错了问题。对象或数组的问题在于,当我将其分配给本地存储并返回并想要删除该项目时,如果它在数组或对象中,我使用 removeItem(keyName) 删除所有内容。这就是为什么我想为每个事件创建一个新的名称/变量。这样,我就可以删除该项目,而无需删除其他所有内容。– 琼达维斯4
答:
-2赞
Arya DataLab
6/30/2023
#1
正确答案是
let count = 5;
var tests = ["test1", "test2", "test3", "test4", "test5"];
for (let i = 0; i < count; i++) {
console.log(tests[i]);
}
0赞
symlink
6/30/2023
#2
与当前代码最相似的解决方案是使用模板变量(反引号)和 eval 函数,该函数将字符串转换为 var 名称。
let count = 5;
var test1 = "test1"
var test2 = "test2"
var test3 = "test3"
var test4 = "test4"
var test5 = "test5"
for (let i = 1; i <= count; i++)
{
console.log(eval(`test${i}`));
}
评论
1赞
XM01 - stands with Palestine
6/30/2023
不要使用 eval
!
1赞
Alexander Nenashev
6/30/2023
在这种特殊情况下使用没有失败,完全安全。赞成,因为它处理eval
const/let
0赞
jondavis4
6/30/2023
我认为这可能会奏效,谢谢
-1赞
Mark Schultheiss
6/30/2023
#3
在代码中内联解释。
let count = 5;
var test1 = "test1";
var test2 = "test2";
var test3 = "test3";
var test4 = "test4";
var test5 = "test5";
var test345 = "test7262";
// get all the window keys - might be a lot
// all the global keys
let keys = Object.keys(window);
// lots of them console.log(keys, keys.length);
/*
const PATTERN = 'test'; // pattern to filter into (might need work if "testmealso" is one
let filteredKeys = keys.filter(name => name.includes(PATTERN)); // one way
*/
// better way perhaps:
const regex = new RegExp("^test[^\d]+", 'g');
/* explained as
^test - starts with test
[^character_group] Negation: Matches any single character that is not in character_group.
\d Matches any decimal digit.
*/
console.log(window["test345"]); // the value of one
// filter then now on the regex
const matchedSites = keys.filter((key) => key.match(regex));
console.log(matchedSites);
//console.log(filteredKeys);
// what are they:
matchedSites.forEach(key => {
// log key/value pairs
console.log(key, window[key]);
});
评论
0赞
Mark Schultheiss
6/30/2023
注意:这严格来说是全局变量/键,因为这里提出的问题,不考虑或 ..这也没有数量限制,如果需要,可以在循环部分或其他方面考虑在内。let
const
1赞
Testarea
6/30/2023
#4
对象或数组的问题在于,当我将其分配给本地存储并返回并想要删除该项目时,如果它在数组或对象中,我使用 removeItem(keyName) 删除所有内容。这就是为什么我想为每个事件创建一个新的名称/变量。这样,我就可以删除该项目,而无需删除其他所有内容。
可能需要更多的改进,但我认为这将解决所述问题:
function saveEvent(event){
if(localStorage.getItem("events") != null){
const events = JSON.parse(localStorage.getItem("events"));
events[event.name] = event.value;
localStorage.setItem("events",events)
}else{
const events = JSON.stringify({ "event1": "event description?", "event2": "another description?"})
localStorage.setItem("events",events)
}
}
function deleteEvent(eventName){
if(localStorage.getItem("events") != null){
const events = JSON.parse(localStorage.getItem("events"))
events[eventName] = undefined;
localStorage.setItem("events",JSON.stringify(events))
}else{
console.error("Events doesn't exist!")
}
}
也许有一些解释:
通过使用 saveEvent(event),您将能够将新事件保存到 localStorage 中的现有对象,或者创建一个新对象(如果不存在)。实际的事件对象的外观显然取决于您的需求。
通过使用 deleteEvent(eventName),将从 localStorage(如果存在)中读取 Object,并从检索到的对象中删除该事件。之后,修改后的对象将再次保存在 localStorage 中。
评论
0赞
jondavis4
6/30/2023
我会看一下,但对所有这些仍然很陌生,所以我可能需要一些时间来了解它是如何工作的。
0赞
Testarea
6/30/2023
确定!如果您有任何问题,请询问:)
评论