有一个返回对象数组的函数。该数组有一个具有名称字段的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;
}
}
答案 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"