现在正在处理这个简单的任务,我似乎无法弄清楚问题是什么。我有一个对象数组,每个对象都有一个SetIndex属性,我想插入对象并维护由对象Set Indices排序的数组。我认为这很简单,但似乎并没有像我预期的那样工作。
本机方法插入,但检查数组是否为空的块似乎总是评估为true,并且每次都覆盖索引0并且不执行拼接。我认为这是一个简单的关于我缺少的JS,但我似乎无法弄明白。
Array.prototype.insertAtIndex = function(item) {
for (i = 0; i < this.length; i++) {
if(i+1 > this.length)
{
if(this[i].SetIndex <= item.SetIndex && this[i+1].SetIndex >= item.SetIndex)
{
this.splice(i,0,item);
}
}
}
if(this[0].length == 0);
{
this[0] = item;
}
};
我运行以下内容来测试函数
item1 = {SetIndex: 0,name: 'item1'};
item2 = {SetIndex: 1,name: 'item2'};
item3 = {SetIndex: 2, name: 'item3'};
item4 = {SetIndex: 3, name: 'item4'};
item5 = {SetIndex: 4, name: 'item5'};
console.log(item1.SetIndex);
my_array = [];
my_array.insertAtIndex(item2);
console.log(my_array);
my_array.insertAtIndex(item1);
console.log(my_array);
my_array.insertAtIndex(item5);
我尝试过使用if(this [0] == undefined)来检查数组是否为空但是没有按照我的计划运行
答案 0 :(得分:1)
你有:
for (i = 0; i < this.length; i++) {
if(i+1 > this.length)
{
// dead code
i
(在循环内)的最大值为this.length-1
。因此,(i+1 > this.length)
永远不会成真。