2015-07-03 58 views
0

我正在研究JavaScript挑战,要求您编写函数以:“返回值(第二个参数)应该返回的最低索引插入排序数组(第一个参数),例如,where([1,2,3,4], 1.5)应返回1,因为它大于1 (0th index),但小于​​。对数组进行排序并将值插入该数组并返回最低索引的函数

提示表示在本次挑战之前使用内置的“.sort()”方法,这是我不熟悉的方法。以下是我迄今为止的内容,我认为我很遥远。

function where(arr, num) { 
    arr.push(num).sort(function(a,b){return a-b;}); 
    return arr.indexOf(num); 
} 

console.log(where([40, 60], 50)); // returns "unexpected identifier" 
+1

'push'返回该数组的新长度,而不是在阵列本身。你无法排序长度。 – Xufox

+0

我在找什么方法将参数'num'添加到'arr'的末尾,然后让我排序'arr'?我的“排序”方法是否正确实施排序我的数组? @Xufox –

+0

只需将两条语句分开!首先'arr.push(num)',然后'arr.sort(...)'。是的,'sort'函数看起来没问题。 – Xufox

回答

3

如@Xufox正确地说,push返回该数组的新长度和数组本身。

重新排序的代码如下所示:

function where(arr, num) { 
    arr.push(num); // Carry out push operation. 
    arr.sort(function(a,b){return a-b;}); // Sort array. 
    return arr.indexOf(num); // Return index of 'num'. 
} 

console.log(where([40, 60], 50)); 
4

拆分两个statments。

function where(arr, num) { 
 
    arr.push(num); 
 
    arr.sort(function(a, b) { 
 
    return a - b; 
 
    }); 
 
    return arr.indexOf(num); 
 
} 
 

 
console.log(where([40, 60], 30)); // 0 
 
console.log(where([40, 60], 50)); // 1 
 
console.log(where([40, 60], 70)); // 2

0
function where(arr, num) { 
    let index = arr.sort((x,y) => x-y) 
       .find(x => num <= x); 

    return index === undefined? arr.length: arr.indexOf(index); 
} 
-1
function getIndexToIns(arr, num) { 
    arr.sort(function(a, b) { 
    return a - b; 
}); 
    var i=0; 
    while(num>arr[i]) 
    i++; 
return i; 
} 
+0

这是干什么的? –

+0

虽然此代码片段可能会解决问题,但[包括解释](http://meta.stackexchange.com/questions/114762/explaining-entirely-code-based-answers)确实有助于提高帖子的质量。请记住,您将来会为读者回答问题,而这些人可能不知道您的代码建议的原因。 –

相关问题