繁体   English   中英

javascript - 删除数组元素

[英]javascript - removing an array element

我将伪代码开始:

array = copper, oil, silver, bronze, gold, iron

user inputs the letter 'l'

if (the input has the letter 'l', remove everything from the array except words with 'l') {

output = copper, bronze, iron

我的代码:

//arr = iron, oil, gold, silver, bronze

classDiv = document.getElementsByClassName("searchOutputName");

for(var i = 0; i < arr.length; i++){

   market = arr[i];

   var n = market.indexOf(userInput.value);

      if (n >= 0) {
      classDiv[i].appendChild(document.createTextNode(arr[i]));

}
else {
      //do nothing
}

我的搜索功能有5个div框。

如果用户输入'l',则第一个框是空的,然后是油,金,银,然后是另一个空盒子。 我想让它们堆叠起来......第一个盒子里有油,然后是金色,然后是银色,然后是2个空盒子。

你也可以使用过滤器的javascript:

var arr = ["copper", "oil", "silver", "bronze", "gold", "iron"];
arr = arr.filter(function(item){ return item.indexOf('l')>=0;});
console.log(arr);

虽然我没有在你的代码中加入html,但我已经设法用JS做了,可以重新设计以满足你的需要。

var arr = ["copper", "oil", "silver", "bronze", "gold", "iron"];

for (var i = 0; i < arr.length; i++) {
    if (arr[i].indexOf('l') !== -1) {
        arr.splice(i, 1); // Remove the element from array
        i = i - 1;  // Equalize to manage the removed array length
    }
}
console.log(arr);  //returns ["copper", "bronze", "iron"] 

JSFiddle (基于您发布的伪代码)

听起来你只想按照与用户输入匹配的元素对数组进行排序。 这样的事怎么样?

var text = 'l', t = ['iron', 'oil', 'gold', 'silver', 'bronze']
t.sort(function(a, b) { return a.indexOf(text) < b.indexOf(text) })
// => ["oil", "gold", "silver", "iron", "bronze"]

这是您应该使用的代码。 它有效,与其他有错误的答案相反。

function filter(items, criteria)
{
  var i, result;

  result = [];
  for (i = 0; i < items.length; i++)
  {
    if (items[i].indexOf('l') !== -1)
    {
        result.push(items[i]);
    }
  }

  return result;
}

您可以按照以下方式过滤条件:

// market  = [ 'copper', 'oil', 'silver', 'bronze', 'gold', 'iron' ];
// userInput = '1';

subset = filter(market, userInput);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM