Я задаю свой вопрос по-другому:
Я использую угловой /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"); }
});
но города ["город"] не определены. Любая помощь?
Я предлагаю перебрать массив с объектом.
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
Поскольку это массив, вам нужно будет использовать индекс для доступа к элементу, например:
var firstCity = cities[0];
console.log(firstCity["city"]);
Если этот javascript, ECMAScript 6 будет содержать метод array.find, но для более старых версий вам просто придется перебирать города и тестировать их по городам [n].city == 8.
Ваш массив cities
содержит 3 элемента. Вы должны проходить через них и проверять, содержит ли какое-либо из них значение, которое вы ищете. Предполагая, что вы используете javascript, из-за console.log
вы можете это сделать.
cities["city"]
не определены, потому что cities
представляют собой массив, который содержит только 0,1 и 2 в качестве индексов (cities[0]
, cities[1]
и cities[2]
). Эти 3 - это те, которые имеют индекс "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");
}
}
console.log