[英]jQuery - Use a “for-each” loop to change variables outside of loop
我有兩個變量說:
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
這可能嗎? 到目前為止,我的嘗試似乎並沒有取得預期的結果。 每個變量都應更改為“ changed”。
編輯:目標是循環遍歷“ 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不是我的難題。
真的不明白,為什么要這么做。
但是,這可能對您嘗試執行的操作有所幫助:
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";
在您的代碼中,您正在使用{first, second}
創建一個臨時對象,因此,當您更改內部的值時,實際的變量first
和second
不會改變,而是該對象內部的值正在更改。
因此,您必須首先將其存儲為變量,然后console.log
variable[index]
。
但這在這里將無法正常工作,因為該變量不是數組。 $.each()
可用於數組。
因此,您必須將其轉換為數組。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.