一 题目
Return the lowest index at which a value (second argument) should be inserted into an array (first argument) once it has been sorted. The returned value should be a number.
二 代码
function getIndexToIns(arr, num) {
arr.push(num);
arr.sort(function(a,b){
return a-b;
});
return arr.indexOf(num);
}
getIndexToIns([40, 60], 50);
三 通过本题的收获
- 对方法的灵活运用上:
通过查阅文档可知,Array.prototype.sort()
sort()默认的排序方式是按照unicode的位点进行排序。也就是说,由于“1”排在“2”之前,所以 10 会排在 2之前,这显然不符合要求,因此我们需要对sort()规则进行定义。
arr.sort(function(a,b){
return a-b;
});
- 思维方式上:
一开始我是走了一点弯路的。因为我最初的想法是先排序,再判断新来的元素应该插入到哪个位置以及找出这个元素下标。
我的最初想法有以下几个问题:- 将简单的问题复杂化。直接随便插然后排序总要比先排好序再挨个遍历快呀。
- 思维还没有从面向过程到面向对象完全转变过来。
- 一点给自己的小tips:借助这道题,更进一步熟悉 sort(),indexOf()方法的运用。