Javascript正在数组中搜索部分字符串

Javascript Searching Array for partial string

本文关键字:搜索部 字符串 数组 Javascript      更新时间:2023-09-26

有一个返回对象数组的函数。数组有一个速率对象,该对象有一个名称字段。名称字段中有"慢速"answers"快速"等名称。

我写了以下内容,希望创建一个新的数组,过滤掉数组值,只返回那些与rates[I].name.匹配的带有"Slow"的值

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

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;
    }
}

部分数组返回控制台。

"rates":[{"id":1123,"price":"1.99","name":"Slow speed - Red Car","policy":{"durqty":1,"durtype":"D","spdup":15000,"spddwn":15000}

您在每个数组位置都有一个对象,而不是字符串本身,请尝试以下操作:

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";
});

您可以使用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所述,您可以使用slice(...)来代替indexOf(...),后者可能更有效,例如:val.name.slice(0,4) == "Slow"