【问题标题】:JavaScript: Looping through an array of booleansJavaScript:循环遍历布尔数组
【发布时间】:2015-11-08 09:32:55
【问题描述】:

我正在寻找循环通过一个布尔值数组,这些布尔值将根据用户点击的链接而改变。首先,我初始化它们...

var boolean1 = false;
var boolean2 = false;
var boolean3 = false;

接下来,我有包含指向新页面的链接的字符串...

var link1 = "index.html";
var link2 = "someotherpage.html";
var link3 = "somepage.html";

然后,我将值放入相应的数组中

var booleanArray = new Array(3);
booleanArray[0] = boolean1;
booleanArray[1] = boolean1;
booleanArray[2] = boolean1;

var linkArray = new Array(3);
linkArray[0] = link1;
linkArray[1] = link2;
linkArray[2] = link3;

然后,我有更改值的函数(将根据用户单击的链接调用值)...

//onlick...
function changeBoolean1()
{
    boolean1 = true;
}
function changeBoolean2()
{
    boolean2 = true
}
function changeBoolean3() 
{
    boolean3 = true;
}

最后,根据调用onlick 的方法,其中一个布尔值将设置为false。那时,我想遍历布尔数组,并获取将哪一个设置为false。根据哪个是false,将打开相应的链接。

function getChoice()
{
    for(var i = 0; i < booleanArray.length; i++)
    {
        if(booleanArray[i] == true)
        {
            window.location.href = linkArray[i];
            break;
        }
    }
}

然而,该方法并没有得到基于

【问题讨论】:

  • 为什么不直接使用数组字面量? var booleanArray=[false,false,false], linkArray=["index.html", "someotherpage.html", "somepage.html"]; 而不是函数之前的 everything。这不是更好阅读和更容易使用吗?
  • 为什么不使用像 {"link":'index.html',"status":true} 这样的对象属性?它将帮助您轻松管理您的代码,并且您不会面临当前与参考相关的问题
  • 当答案很可能是 OP 在本教程中没有走那么远时,为什么要问“为什么不”?

标签: javascript arrays loops if-statement boolean


【解决方案1】:

您需要更改 onclick 函数以更新数组而不是原始变量

//onlick...
function changeBoolean1() {
    booleanArray[0] = true;
}
function changeBoolean2() {
    booleanArray[1] = true
}
function changeBoolean3() {
    booleanArray[2] = true;
}

由于布尔值是基元,实际数组中存储的是值,不是对原始变量的引用(正如您对对象所期望的那样)

【讨论】:

  • 成功了。谢谢。我用 Java 做了很多工作,切换到 JavaScript 有点困难。不过,再次感谢您的帮助。
【解决方案2】:

像字符串、数字这样的原始类型变量总是按值传递。 因此您需要在数组中显式设置值或在对象中设置布尔属性。

【讨论】:

    【解决方案3】:
    function changeBool(booleanArray, index){
         booleanArray[index] = true;
    }
    
    function getChoice(){
        for(var i = 0; i < booleanArray.length; ++i){
            if(booleanArray[i]){
                window.location.href = linkArray[i];
                break;
            }
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2018-12-18
      • 1970-01-01
      • 2019-08-07
      • 2013-08-16
      • 2017-12-12
      • 2015-10-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多