簡體   English   中英

jQuery-使用“ for-each”循環在循環外更改變量

[英]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}創建一個臨時對象,因此,當您更改內部的值時,實際的變量firstsecond不會改變,而是該對象內部的值正在更改。

因此,您必須首先將其存儲為變量,然后console.log variable[index]

但這在這里將無法正常工作,因為該變量不是數組。 $.each()可用於數組。

因此,您必須將其轉換為數組。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM