在Javascript中搜索由整数组成的数组并返回带有值的新数组

Search an Array made of integers in Javascript and return new array with values

本文关键字:数组 新数组 返回 搜索 整数 Javascript      更新时间:2023-09-26

我正试图从JavaScript中的for循环中的if条件中创建一个新数组。到目前为止,新数组在下列情况下返回undefined:

if( numbers[i] <= num)

我需要返回小于或等于num值的所有元素,并从它们创建一个新数组。有人能告诉我我哪里做错了吗?

function search(num, numbers) {
  for (i = 0; i < numbers.length; i++){
  var x = [];
    if( numbers[i] <= num){
    x.push(numbers[i]);}
  }
 return x;
 }
(search(14, [7, 3, 23, 9, 14, 20, 7])

您应该使用array.filter

function search(num, numbers) {
    return numbers.filter(function(n) { return n <= num });
}
search(5, [1,3,44,7,10]) //returns [1,3]

上面代码的核心问题是您在for循环的每次迭代中声明var x = [] -每次都被覆盖。

  1. 没有名为"价格"的数组。你应该替换"价格"数字"。这就是为什么你得到undefined
  2. 将x=[]移出for循环。否则,每次执行for循环时,都会用空数组实例化x。每次函数在循环中迭代时,代码似乎都会擦除x的内容。

function search(num, numbers) {
    var x = [];
  for (i = 0; i < numbers.length; i++){
  
    if( numbers[i] <= num){
    x.push(numbers[i]);}
  }
 return x;
 }
$('p').text(search(14, [7, 3, 23, 9, 14, 20, 7]));
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script>
<p></p>

看到小提琴

看起来您正在迭代另一个数组"Prices",其长度可能大于数字数组,这就是为什么您得到未定义的原因。

将x=[]移出for循环,因为它将为for循环的每个值重置

"prices.length"

可以使用underscore.js过滤函数
 bigValues = function(array){
        return _.filter(array, function(element){ 
          return element > 10; 
        });
    }
var array = [ 1, 2, 3, 10, 11, 23 ];
var bigResult = bigValues(array);