Javascript搜索数组以获取部分字符串

时间:2016-07-23 03:59:37

标签: javascript arrays

有一个返回对象数组的函数。该数组有一个具有名称字段的rate对象。在名称字段内是名称,如"慢速"和"快速"。

我写了以下内容,希望创建一个新的数组,它将过滤掉数组值,只返回那些带有"慢"与费率[i] .name。

匹配

到目前为止,我在开发控制台中遇到此错误。 "未捕获TypeError:value.substring不是函数"

.contact-form:focus,.contact-hover:focus{
background-color: #ffffff;
    border: none;
    height: 60px;
    width: 100%;
    padding: 0 22% 0 70px;
    -webkit-border-radius: 4px;
    -moz-border-radius: 4px;
    border-radius: 4px;
    color: #dadada;
}

数组的一部分在控制台中返回。

var rates = myArray();
var index, value, result;
var newArr = [];

for (index = 0; index < rates.length; ++index) {
    //value = rates[index];
    if (value.substring(0, 5) === "Stand") {
        result = value;
        newArr.push();
        break;
    }
}

2 个答案:

答案 0 :(得分:3)

每个数组位置都有一个对象而不是字符串本身,请尝试这样做:

var rates = myArray();
var index, value, result;
var newArr = [];

for (index = 0; index < rates.length; ++index) {
    name = rates[index].name;
    if (name.substring(0, 4) === "Slow") {
        newArr.push(rates[index]);
    }
}

尝试使用filter这样的功能,看起来更清晰

var newArr = rates.filter(function(rate){
  return rate.name && rate.name.substring(0,4) === "Slow";
});

答案 1 :(得分:1)

您可以使用filter执行此操作,例如:

var newArr = rates.filter(function(val){
    // check if this object has a property `name` and this property's value starts with `Slow`.
    return val.name && val.name.indexOf("Slow") == 0; 
});

正如@ 4castle所提到的,你可以使用indexOf(...)来代替slice(...),这可能更有效,例如:val.name.slice(0,4) == "Slow"