Javascript 使用IndexOf拆分数组无效
这是一个问题链接,指向我已经问过的另一个问题(请参见此处:) 问题是我有一个项目列表,我想从一个随机项目中拆分出来。我尝试使用“IndexOf()”,但它总是返回-1。知道我做错了什么吗 这是我的密码: HTMLJavascript 使用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
<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);
}