Javascript 使用IndexOf拆分数组无效

Javascript 使用IndexOf拆分数组无效,javascript,arrays,list,split,indexof,Javascript,Arrays,List,Split,Indexof,这是一个问题链接,指向我已经问过的另一个问题(请参见此处:) 问题是我有一个项目列表,我想从一个随机项目中拆分出来。我尝试使用“IndexOf()”,但它总是返回-1。知道我做错了什么吗 这是我的密码: HTML <ul class="myClass"> <li class="item"> <a href="URL" title="Company A" target="_blank"> <spa

这是一个问题链接,指向我已经问过的另一个问题(请参见此处:)

问题是我有一个项目列表,我想从一个随机项目中拆分出来。我尝试使用“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>

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

试试这个:

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:

您的
randomChild
已经是一个随机索引,无需将其传递到
indexOf
中。。。现在,你基本上是在问“给我索引的索引…”我认为
listItems
是一个字符串数组,
randomChild
包含一个整数或双精度,所以
listItems.indexOf(randomChild)
总是返回
-1
只需使用更多的jQuery,它自己解决了->当我们已经有了
randomChild
那么提取
listItems[randomChild]
然后查找
listItems.indexOf(randomChildObject)
有什么意义呢?值不会改变!是的,我只是在他现在的例子中说明什么是错的。我在下面添加了一部分,解释这是额外的工作,但感谢您指出!=]
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);

}