IndexOf в массиве, который содержит атрибуты

0

Я задаю свой вопрос по-другому:

Я использую угловой /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
    Пожалуйста, укажите ваш язык с тегом. Это JavaScript?
  • 0
    @hata, вероятно, из-за console.log
Показать ещё 1 комментарий
Теги:
indexof

4 ответа

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
  • 0
    Ваше решение качается !! Спасибо
0

Поскольку это массив, вам нужно будет использовать индекс для доступа к элементу, например:

var firstCity = cities[0];
console.log(firstCity["city"]);
  • 0
    Я обновил свой вопрос для лучшего понимания моей потребности. Спасибо
0

Если этот javascript, ECMAScript 6 будет содержать метод array.find, но для более старых версий вам просто придется перебирать города и тестировать их по городам [n].city == 8.

0

Ваш массив 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");
   }
}
  • 0
    Я обновил свой вопрос для лучшего понимания моей потребности. Спасибо
  • 0
    Хорошо, обновил мой ответ тоже. Вероятно, решит вашу проблему
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню