我的问题不同:
我正在使用angular / Javacript,我想知道数组中是否存在值。这是我的代码:
var source = [1, 2, 3 , 4 , 5];
var cities = [{ city: 4 }, { city: 6 }, { city: 8 }];
angular.forEach(source, function (value, key) {
if (cities["city"].indexOf(value) != -1) {
console.log(value+ " exist"); }
else{ console.log(value+ " not exist"); }
});
但是城市[“城市”]并未定义。有帮助吗?
答案 0 :(得分:0)
由于它是一个数组,您需要使用索引来访问该元素,如下所示:
var firstCity = cities[0];
console.log(firstCity["city"]);
答案 1 :(得分:0)
如果是javascript,ECMAScript 6将包含一个array.find方法,但是对于旧版本,你只需要遍历城市并使用cities [n] .city == 8来测试每个城市。 / p>
答案 2 :(得分:0)
您的cities
数组包含3个元素。
您必须遍历它们并检查它们中是否包含您要查找的值。
假设你正在使用javascript,因为console.log
,你可以这样做。
cities["city"]
未定义,因为cities
是一个仅包含0,1和2作为索引的数组(cities[0]
,cities[1]
和cities[2]
)。
这三个是具有索引"city"
的那些,例如,cities[0]["city"]
var source = [1,2,3,4,5];
for (var i = 0; i < source.length; i++) {
var found = false;
for (var j = 0; j < cities.length; j++) {
if (cities[j]["city"] === i) {
found = true;
}
}
if (found) {
console.log(i + " exists");
} else {
console.log(i + " not exists");
}
}
答案 3 :(得分:0)
我建议用对象迭代数组。
var source = [1, 2, 3, 4, 5];
var cities = [{ city: 4 }, { city: 6 }, { city: 8 }];
source.forEach(function (a) {
if (cities.some(function (aa) { return aa.city === a; })) {
document.write(a + ' exist<br>');
} else {
document.write(a + ' does not exist<br>');
}
});
奖金:根据原始问题,使用Array.prototype.indexOf
的一些想法。
var city42 = { city: 42 };
var cities = [{ city: 4 }, { city: 6 }, { city: 8 }, city42];
document.write(cities.indexOf({ city: 8 }) + '<br>'); // -1 does not work
document.write(cities.indexOf(city42) + '<br>'); // 3 does work
var index = -1;
cities.some(function (a, i) {
return a.city === 8 && ~(index = i);
});
document.write(index + '<br>'); // 2