使用用户输入的维度,根据每个元素中的字符数筛选数组

Filtering an array based on the number of characters in each element using user-entered dimensions

本文关键字:元素 字符 筛选 数组 输入 用户      更新时间:2023-09-26

我是一个非常新手的程序员,有点拘泥于练习作业。

我想学习根据每个元素中的字符数过滤数组中的元素(我的数组是一个30个状态的列表)。基本上,用户在两个文本框中输入尺寸(数字0-40,有一个最小值和最大值)并按下输入按钮,然后数组应该根据这些数字进行更改(删除不符合输入规范的元素)。

我已经毫无问题地设置了HTML,但完全依赖于Javascript。我试图使用"过滤器",但它似乎没有达到我想要的效果。

任何帮助都将不胜感激!

您可以使用Array.prototype.filter函数。它接受一个自定义函数,该函数应返回truefalse。例如,此代码采用ints数组,通过应用自定义函数创建一个新数组(删除偶数),并将其分配回ints:

var ints = [1, 2, 3, 4, 5];
ints = ints.filter(function(x) { return x % 2 === 1; }); // ints is [1, 3, 5] now

这就是你可以在你的情况下使用它的方法:

// When a user clicks a button
document.getElementById('calc').onclick = function() {
  var strings = ['a', 'on', 'the', 'form', 'index', 'length', 'factory'];
  
  // Read values from <input>s
  var minLength = parseInt(document.getElementById('minLength').value);
  var maxLength = parseInt(document.getElementById('maxLength').value);
  // Filter strings array according to the rule (length is between minLength and maxLength)
  strings = strings.filter(function(x) {
    return x.length >= minLength && x.length <= maxLength;
  });
  // Output
  document.getElementById('result').innerHTML = strings.join('<br/>');
};
Min length: <input type="text" id="minLength" value="0"/><br/>
Max length: <input type="text" id="maxLength" value="7"/><br/>
<button id='calc'>Show</button>
<div id="result"></div>

假设您的数组已定义,它被称为myArray。

我认为您可以在某种程度上从用户那里获取值。所以我随机选择了最小值和最大值,如下所示。

var max = 40 , 
    min = 0 ; 
for(var i = 0; i < myArray.length ; i++){
 var filteredArray = [];
 if( myArray[i].length >= min && myArray[i].length <= max ){
   filteredArray.push(myArray[i]);
 }
}