Javascript正在数组中搜索部分字符串
Javascript Searching Array for partial string
有一个返回对象数组的函数。数组有一个速率对象,该对象有一个名称字段。名称字段中有"慢速"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"
相关文章:
- 在元素列表中搜索给定字符串
- Google Sheets/Javascript:无法使用indexOf()在数组中搜索特定字符串
- JS:在文本区域搜索特定字符串
- 使用PowerShell在JavaScript网页上搜索文本字符串
- 在 Jquery 中搜索匹配字符串的 URL
- 多个下拉列表搜索替换字符串
- 如何在我的内容脚本中获取 Google 搜索查询字符串
- 在 Javascript/JQuery 中搜索 XML 字符串
- 使用indexOf检查Javascript子字符串,或使用正斜杠/搜索日期字符串
- 有没有办法把'&'在搜索查询字符串到'+'或者使用多个文本框扩展查询
- 使用XPath在DOM中搜索相同字符串的倍数
- 清理可搜索的字符串JS
- 使用jQuery搜索HTML字符串
- 在多个数组中搜索一个字符串,然后设置一个jQuery变量
- jQuery:当字符串不等于正在搜索的字符串时替换图像
- 未捕获的类型错误:不能使用'in'搜索''JSON字符串
- 如何在字符串中搜索子字符串和正则表达式
- Javascript正在数组中搜索部分字符串
- 如何在javascript中搜索整个字符串中的一部分字符串
- Javascript搜索子字符串