javascript - 使用 IndexOf 分割数组不起作用

标签 javascript arrays list split indexof

这是一个指向我已经问过的另一个问题的问题链接(请参见此处:Sort list items from random child)。

问题是我有一个项目列表,我想从随机项目中分离出来。我正在尝试使用“IndexOf()”,但它始终返回-1。你知道我做错了什么吗?

这是我的代码:

HTML

<ul class="myClass">
        <li class="item">
          <a href="URL" title="Company A" target="_blank">
            <span class="logo">
              <img src="images/logo1.jpg">
            </span>
          </a>
        </li>
        <li class="item">
          <a href="URL" title="Company B" target="_blank">
            <span class="logo">
              <img src="images/logo2.jpg">
            </span>
          </a>
        </li>
        <li class="item">
          <a href="URL" title="Company C" target="_blank">
            <span class="logo">
              <img src="images/logo3.jpg">
            </span>
          </a>
        </li>
        <li class="item">
          <a href="URL"  title="Company D" target="_blank">
            <span class="logo">
              <img src="images/logo4.jpg">
            </span>
          </a>
        </li>
        <li class="item">
          <a href="URL" title="Company E" target="_blank">
            <span class="logo">
              <img src="images/logo5.jpg">
            </span>
          </a>
        </li>
    ...
    </ul>

JAVASCRIPT

function randomizeChild(){
        var listItems = [];

        $('ul.myClass li').each( function() {
          listItems.push(this);   
        });

        var randomChild = Math.round(Math.random() * listItems.length);

        console.log("Random Child ---> " + randomChild);

        var indexToSplit = listItems.indexOf(randomChild);
        var first = listItems.slice(0, indexToSplit);
        var second = listItems.slice(indexToSplit + 1);

        console.log(indexToSplit); // it returns always -1 :(
        console.log(first, second);

       }

最佳答案

您的问题是您正在获取整数索引并检查数组中不存在的整数的indexOf。您有一个元素数组。

http://jsfiddle.net/h2a4L67k/

试试这个:

function randomizeChild() {
    var listItems = [];

    $('ul.myClass li').each(function () {
        listItems.push(this);
    });

    var randomChild = Math.round(Math.random() * listItems.length);

    console.log("Random Child ---> " + randomChild);

    var randomChildObject = listItems[randomChild];
    var indexToSplit = listItems.indexOf(randomChildObject);
    var first = listItems.slice(0, indexToSplit);
    var second = listItems.slice(indexToSplit + 1);

    console.log(indexToSplit); // it returns always -1 :(
    console.log(first, second);

}

您甚至不需要执行上述操作。您已经有一个随机索引,因此请立即使用它:

function randomizeChild() {
    var listItems = [];

    $('ul.myClass li').each(function () {
        listItems.push(this);
    });

    var randomIndex = Math.round(Math.random() * listItems.length);

    console.log("Random Child ---> " + randomIndex);

    var first = listItems.slice(0, randomIndex);
    var second = listItems.slice(randomIndex + 1);

    console.log(randomIndex); // it returns always -1 :(
    console.log(first, second);

}

fiddle :http://jsfiddle.net/h2a4L67k/1/

关于javascript - 使用 IndexOf 分割数组不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33239570/

相关文章:

javascript - 可以使用 jQuery 或 Javascript 将图片的特定部分用作链接吗?

javascript - 在javascript中,有没有办法将url转换为data-url?

javascript - Json 数组从 $_POST ['id' 增加我的 id 值]

c - fscanf 字符串(字符数组)从索引 1

c++ - 使用模板函数对列表容器进行排序

python - 根据列中的值制作列表

javascript - 为什么 function.toString() 输出 "[native code]",而登录到控制台直接显示函数的源代码?

javascript - 使用 asp.net 按钮执行 javascript 代码

python - 检查一个数组中的所有行是否都存在于另一个更大的数组中

list - 如何在 Dart 列表中对赔率和偶数进行排序