gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 07:04:38 25 4
gpt4 key购买 nike

我有一个这样的数组:

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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com