我有两个变量说:
var first = "first";
var second = "second";
我想使用$ .each循环进行更改:
$.each({first, second}, function(index, value) {
value = "changed"; // ASSUME CREATES A NEW VARIABLE?
});
console.log(first); // DOES NOT CHANGE
console.log(second); // DOES NOT CHANGE
这可能吗?到目前为止,我的尝试似乎并没有取得预期的结果。每个变量都应更改为“已更改”。
编辑:目标是遍历“ var first”和“ var second”并将其值更改为“ changed”,以避免:
var first = "first";
var second = "second";
first = "changed";
second = "changed";
没有循环的实际使用情况将导致我想避免使用多行first = "changed"
和second = "changed"
代码。
编辑#2:这是实际的代码段。
var favorite_array = [
"https://api.themoviedb.org/3/account/{account_id}/favorite/movies?api_key=",
"https://api.themoviedb.org/3/account/{account_id}/favorite/tv?api_key=",
];
var watchlist_array = [
"https://api.themoviedb.org/3/account/{account_id}/watchlist/movies?api_key=",
"https://api.themoviedb.org/3/account/{account_id}/watchlist/tv?api_key=",
];
var fquery = (type == "tv") ? favorite_array[1] : favorite_array[0];
var wquery = (type == "tv") ? watchlist_array[1] : watchlist_array[0];
$.each(["fquery", "wquery"], function(index, query) {
window[query] = window[query].replace("{account_id}", getCookie("account_id"));
window[query] += api_key + language + "&session_id=";
});
我会提前道歉,JavaScript不是我的难题。
答案 0 :(得分:0)
真的不明白为什么要这么做。
但是,这可能对您尝试做的事情有帮助:
var first = "first";
var second = "second";
$.each(["first", "second"], function(index, value) {
window[value] = "changed";
});
console.log(first);
console.log(second);
我真的建议您改用对象或数组。
请检查@ CodePen: https://codepen.io/animatedcreativity/pen/ebdb516cb0c3e728a054ba45b415c17f/
更新:
为使其更加自动化,我建议您以“ my_”开头所有变量。请检查:
// Use something more unique than my_
var my_first = "first";
var my_second = "second";
for (var key in window) if (key.substr(0, 3) == "my_") window[key] = "changed";
console.log(my_first);
console.log(my_second);
无论您有多少个变量,只要一行就可以将所有以“ my_”开头的变量设置为“ changed”。
请检查@ CodePen https://codepen.io/animatedcreativity/pen/2de7386d83f27945c82e301982901310
更新:
最简单的方法是使用@Paulpro的建议:
first = second = "changed";
答案 1 :(得分:0)
在代码中,您正在使用{first, second}
创建一个临时对象,因此,当您在其中更改值时,实际变量first
和second
并没有改变,而是该对象内部的值正在更改。
因此,您必须首先将其存储为变量,然后console.log
和variable[index]
。
但是,由于该变量不是数组,因此此处无法正常工作。 $.each()
适用于数组。
因此,您必须将其转换为数组。