javascript - 使用部分值从数组中获取全部值

标签 javascript arrays indexof

我有一个这样的数组:

var array = ["xs-1", "sm-10", "md-4"];

现在我想获取特定值末尾的数字。例如,我想在数组中搜索 "md-" 并查看该字符串末尾的数字(应返回 4)。

我不能执行 array.indexOf("xs-") 因为那不是全部值。有办法做到这一点吗?

最佳答案

使用 for 循环:

var array = ["xs-1", "sm-10", "md-4"];
var search = "md-";
var found = null;

for (var i = 0; i < array.length; i++) {
  if (array[i].indexOf(search) === 0) {
    found = array[i];
    break;    // Note: this is assuming only one match exists - or at least you are
              // only interested in the first match
  }
}
if (found) {
  alert(found);
} else {
  alert("Not found");
}

使用.filter:

    var array = ["xs-1", "sm-10", "md-4"];
    var search = "md-";

    var filtered = array.filter(function(item) {
      return item.indexOf(search) === 0;
    });

    // note that here filtered will contain all matched elements, so it might be more than
    // one match.
    alert(filtered);

根据@János Weisz 的建议构建,您可以使用 .reduce 轻松地将数组转换为对象:

        var array = ["xs-1", "sm-10", "md-4"];
        var search = "md";

        var obj = array.reduce(function(prev, item) {
          var cells = item.split("-");
          prev[cells[0]] = cells[1];
          return prev;
        }, {});

         // note: at this point we have an object that looks like this:
         // { xs:1, sm:10, md: 4 }
         // if we save this object, we can do lookups much faster than looping 
         // through an array
         // now to find "md", we simply do:

        alert(obj[search]);

如果您需要从同一个源数组进行多次查找,那么将其转换为一个对象可能是总体上最有效的方法。您支付了转换的初始价格,但每次您必须搜索数组时,查找都是 O(1) 而不是 O(n)。当然,如果您只需要一件元素,那么可能就不用费心了。

关于javascript - 使用部分值从数组中获取全部值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26468446/

相关文章:

javascript - 验证长字符串是否有足够的可分割空间用于显示

java - 将随机数组编号替换为零

java - 使用对象数组时出现 NullPointerException

java - 从 ArrayList<CustomObject> 中查找项目索引的更好方法

javascript - 在 LeafLet map 上显示 jQuery 动态 GeoJSON 内容

javascript - html 脚本 src =""使用按钮触发重定向

java - 返回字符串数组中的单词

Javascript - 返回意外结果的函数

c# - c# 中的 Substring 和 IndexOf 和 LastIndexOf

javascript - 设置 JavaScript 日期格式并添加 365 天