【发布时间】:2019-05-04 00:50:27
【问题描述】:
我有两个变量说:
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:这是一个实际的 sn-p 代码。
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 不是我的问题。
【问题讨论】:
-
为什么要这样做?请给我们更多的背景信息,也许有更好的方法来做你想做的事。
-
@ibrahimmahrir 在我的使用场景中,我正在创建一个函数,该函数将具有多个 JSON 查询,在执行查询之前需要构建请求(url)。有两个查询需要发生,两个请求(url)都需要构建。因此,我没有尝试使用 jQuery $.each 在循环中执行此操作,而不是使用替换或 += 语句链。这个问题相当笼统,因为其他人也想做类似的事情。
-
就目前而言,您不能这样做,因为作为原始值的字符串被复制而不是作为引用传递。唯一的方法是将它们组合成一个对象。顺便说一句,这仍然是一个XY problem,可以以完全不同的方式解决(我仍然不明白你想要实现什么)。
-
你可以用十五个。
-
如果你有多个变量代表相似的数据,你可能应该使用一个数组而不是一堆变量。这将使您的循环版本也能正常工作。
标签: javascript jquery arrays foreach var