我有一个排序的数字列表。我想在数组中搜索一个数字(将其称为searchVal)。因此,如果数字在数组中,则下面的代码行可以正常工作。
var sPos = $.inArray(searchVal, MyArray);
但是,如果它不在MyArray中,我想选择下一个最大的数字,即
我正在下面的列表中搜索8,我希望它返回10。
4, 5, 6, 10, 11
我是javascript新手,想知道实现此目标的最佳方法是什么?我已经看到可以使用过滤器,其中返回的任何数字> =到8,然后从此过滤的列表中获取最小值。还是我应该使用reduce函数的情况?
答案 0 :(得分:7)
您可以在已排序的数组上使用Array.find()
。
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="e.aniketpradhan.streamaudio"> <uses-feature android:name="android.hardware.camera" /> <uses-feature android:name="android.hardware.camera.autofocus" /> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.RECORD_AUDIO" /> <uses-permission android:name="android.permission.CAMERA" /> <uses-permission android:name="android.permission.WAKE_LOCK" /> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/AppTheme"> <activity android:name=".MainActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest>
方法返回满足提供的测试功能的数组中 first 元素的 value 。否则,返回let text = function() { this.main = function(){ return {a:1}; } this.toArr = function(){ return [1,2,3]; } }; let t = new text(); console.log( t.main() ); // call a function 'main' in text; console.log(t.toArr()); // call a function 'toArr' in text;
。
find()
答案 1 :(得分:2)
由于数组已排序,因此可以使用
var num = MyArray.find(x => x > 8)
答案 2 :(得分:0)
对于未排序的数据,您可以获取某项的绝对增量,并检查最后一项的增量,然后返回增量较小的那一项。
c1 = [70.38017162671083, 573.9210230366474]
c2 = [62.14926043346433, 573.9210230601221]
c3 = [62.170859502652874, 566.273256963365]
c4 = [70.41870117287603, 566.2827951694268]
a1 = 0.7162475014121918
a2 = 3.076344266497204
a3 = 4.964159781307695
a4 = 5.859686474799228
a = Math.sin(a1) +Math.sin(a2)
b =-Math.cos(a1) -Math.cos(a2)
c = Math.sin(a3) +Math.sin(a4)
d =-Math.cos(a3) -Math.cos(a4)
e = Math.sin(a1)*c1[0] + Math.sin(a2)*c2[0] - Math.cos(a1)*c1[1] - Math.cos(a2)*c2[1]
f = Math.sin(a3)*c3[0] + Math.sin(a4)*c4[0] - Math.cos(a3)*c3[1] - Math.cos(a4)*c4[1]
x = (d*e - b*f) / (a*d - b*c)
y = (a*f - c*e) / (a*d - b*c)
答案 3 :(得分:-2)
您好,您可以使用地图功能确定到8的距离。
var array = [4, 5, 6, 10, 11];
var distanceArray = array.map(function(element){
var distance = 8-element
if(distance < 0){
distance = distance * -1;
}
return distance;
})
然后您得到了[4,3,2,2,3]。使用Math.min
var minimum = Math.min(...distanceArray);
现在您的最低数量为2。现在找到了职位
var position = distanceArray.indexOf(minimum);
现在您可以看到最近的电话号码
var nearest = array[position];
认识你6 ....