所以我有这个数组:
var watchesArray = [
{
model: "FR 10",
image:"",
url: "",
price: 129.99,
sports: ["Running", "Fitness"],
touchScreen:false,
GPS:false,
heartRateMonitor:false,
hrZoneTraining:false,
},
];
if(watchesArray[0].sports(contains a specific value or values){
do something
} else {
dont do anything
}
我想要做的就是检查这只手表是否具有特定的运动,如果确实如此,则将其置于if语句中以便我可以使用它。
我该怎么做?感谢
答案 0 :(得分:2)
使用Array.indexOf如下文
if(watchesArray[0].sports.indexOf('Running') > -1){
do somwthing
}
注意: - 如果父母不存在,则会抛出错误。
答案 1 :(得分:1)
它只是一个数组,即使它是“嵌套的”:
if (watchesArray[0].sports.indexOf('Running') !== -1) ...
如果它是第一个索引,则返回0
,因此您必须检查-1
(“未找到”)。
请注意,IE7 / 8不支持Array.prototype.indexOf()
,但如果需要,还有polyfill方式。
答案 2 :(得分:0)
所有浏览器都没有支持的简单功能,但您可以编写以下代码:
function contains(a, obj) {
var i = a.length;
while (i--) {
if (a[i] === obj) {
return true;
}
}
return false;
}
有关详细信息,请查看此答案 How do I check if an array includes an object in JavaScript?
答案 3 :(得分:0)
您可以像这样尝试indexof:
var watchesArray = [
{
model: "FR 10",
image:"",
url: "",
price: 129.99,
sports: ["Running", "Fitness"],
touchScreen:false,
GPS:false,
heartRateMonitor:false,
hrZoneTraining:false,
},
];
if (watchesArray[0].sports.indexOf('hello') != -1){
alert("exists");
} else {
alert("this index does not exist");
}
对于javascript中的数组,您始终可以使用指定的键遍历。如果密钥不存在,indexof将返回0,因此它将转到else部分。
答案 4 :(得分:0)
正如Jared所说,你可以使用Array.indexOf()
indexOf()方法返回可在数组中找到给定元素的第一个索引,如果不存在则返回-1。
在你的情况下,这意味着
if(watchesArray[0].sports.indexOf(value) !== -1){
do something
} else {
dont do anything
}
我还为您提供了一个匹配多个值的函数:jsbin