如果我有一个充满10个数字的Javascript数组。 例如(10,11,12,13,14,15,16,17,18,19) 我想要一个值为20的变量,并检查是否有 数组中的元素大于20.因为我将比较许多填充数字的数组,并且不知道它们包含的数字。
如何获取20然后获取Javascript来测试数组中的每个数字,以确定它是否大于20。
我知道你可以这样说:
var x = 20;
if ( x > myArray[0] &&
x > myArray[1]
等。等等,但这可能意味着输入一长串的元素检查。是否有一种简单的方法,比如从开始索引[0]到[10]或其他什么来检查?
答案 0 :(得分:1)
您可以使用.some()
:
if (myArray.some(function(x) {return x > 20;}))
// do something
并非所有浏览器都支持它,但您可以轻松地对其进行填充。此外,库具有这样的辅助函数,例如下划线的any
。
答案 1 :(得分:0)
使用for循环。
for (var i = 0; i < myArray.length; i++) {
if (x > myArray[i]) {
// whatever
}
}
答案 2 :(得分:0)
var x = 20;
var myArray = [10,11,12,13,14,15,16,17,18,19];
var cnt=0;
for(var i = 0; i < myArray.length; i++) {
if(myArray[i]>x) {
cnt++;
}
}
alert("Found "+cnt+" values greater than "+x+" in the array" );
答案 3 :(得分:0)
试试这个:
function getValuesFrom(array,x)
{
x = +(x);//coerce to number
array.sort(function(a,b)
{
return (a > b ? 1 : -1);
});//sort in ascending order
for (var i = 0;i<array.length;i++)
{
if (+array[i] >= x)
{
return array.slice(i);//return all elements >= x
}
}
}
var myArray = [10,11,12,13,14,15,16,17,18,19];
var larger = getValuesFrom(myArray,15);
console.log(larger);//[15,16,17,18,19]
console.log(larger.length);//5
应该这样做。注意:将数组传递给此函数后,您可能会发现其顺序已更改,以避免这种情况:
function getValuesFrom(array,x)
{
x = +(x);//coerce to number
var tmpArray = array.slice(0);//copy array
tmpArray.sort(function(a,b)
{
return (a > b ? 1 : -1);
});//sort in ascending order
for (var i = 0;i<tmpArray.length;i++)
{
if (+tmpArray[i] >= x)
{
return tmpArray.slice(i);//return all elements >= x
}
}
}
答案 4 :(得分:0)
我喜欢使用Object.prototype
来扩展JavaScript对象的基本功能。就像JS框架prototype和MooTools一样。
因此,向JS filter
- 对象引入一个新的Array
函数不仅可以解决您的特定问题,还可以解决一大类问题。
// extending the Array type with the new function 'filter'
// so all arrays have access to this function
// argument `fn` is a test-function which returns true or false
Array.prototype.filter = function(fn) {
var filtered = []; // a new array for the filtered items
for(var i = 0, len = this.length; i < len; i++) {
var item = this[i];
// store this item if fn returns true
if( fn(item) ) filtered.push(item);
}
return filtered;
}
// want to filter this array
var myArr = [1,2,3,4,5,6];
// find items in myArr > 3
var myArrGt3 = myArr.filter(
// this is the test function / must always return a bool
function(item) {
return item > 3;
}
);
// testing output
document.write(JSON.stringify(myArrGt3)); // prints "[4,5,6]"
答案 5 :(得分:0)
您可以使用jQuery的inArray方法。
说明:在数组中搜索指定的值并返回其索引(如果未找到,则返回-1)。
$.inArray( 5 + 5, [ 4, 5 , 7, 10 ] ); // output is 3
示例:
<script>
var arr = [ 4, "Pete", 8, "John" ];
jQuery.inArray( "John", arr ) // this returns 3(Index value of John)
</script>
在 for loop 的帮助下,您也可以循环播放它们。
var array1=["fox","tiger","lion"];
var array2=["rat","cow","lion"];
for(i=0; i<array2.length; i++)
{
document.write(jQuery.inArray( array2[i], array1 ));
}
Output: -1
-1
2
美好的一天!