Циклы, работа с массивами объектами?

207
05 января 2018, 01:02

var auto = [ 
          { 
            marka: "BMW", 
            model: "4k", 
            cuzov: "A"; 
          } 
           { 
            marka: "Merc", 
            model: "4k", 
            cuzov: "B"; 
          } 
           { 
            marka: "Audi", 
            model: "3k", 
            cuzov: "C"; 
          } 
           { 
            marka: "Toyota", 
            model: "1k", 
            cuzov: "D"; 
          } 
           { 
            marka: "Lexus", 
            model: "2k", 
            cuzov: "E"; 
          } 
           { 
            marka: "Rang", 
            model: "3k", 
            cuzov: "F"; 
          } 
           { 
            marka: "BMW", 
            model: "4k", 
            cuzov: "G"; 
          } 
           { 
            marka: "BMW", 
            model: "2k", 
            cuzov: "Y"; 
 
          } 
           { 
            marka: "Audi", 
            model: "3k", 
            cuzov: "U"; 
          } 
      ] 
      var marka = [Audi, Rang, Merc]; 
      var model = ["4k", "2k", "3k"]; 
      var cuzov = [Выбрать все]

Подскажите пожалуйста, как пройтись по нашему массиву auto, и выбрать только те объекты, у которых данные совпадают с нашими 2 массивами. Если можно 2 варианты 1) C помощью array.map 2) Цикл for Ковыряюсь тут, что то совсем не получается

Answer 1

Циклом и фильтром. map тут не поможет, нужен array.filter.

var auto = [{ 
    marka: "BMW", 
    model: "4k", 
    cuzov: "A" 
  }, 
  { 
    marka: "Merc", 
    model: "4k", 
    cuzov: "B" 
  }, 
  { 
    marka: "Audi", 
    model: "3k", 
    cuzov: "C" 
  }, 
  { 
    marka: "Toyota", 
    model: "1k", 
    cuzov: "D" 
  }, 
  { 
    marka: "Lexus", 
    model: "2k", 
    cuzov: "E" 
  }, 
  { 
    marka: "Rang", 
    model: "3k", 
    cuzov: "F" 
  }, 
  { 
    marka: "BMW", 
    model: "4k", 
    cuzov: "G" 
  }, 
  { 
    marka: "BMW", 
    model: "2k", 
    cuzov: "Y" 
 
  }, 
  { 
    marka: "Audi", 
    model: "3k", 
    cuzov: "U" 
  } 
] 
var marka = ["Audi", "Rang", "Merc"]; 
var model = ["4k", "2k", "3k"]; 
 
/* фильтром */ 
var rez1 = auto.filter(x => (marka.includes(x.marka) && model.includes(x.model))); 
console.log(rez1); 
 
/* циклом */ 
var rez2 = []; 
for (var auto1 of auto) { 
  if (marka.includes(auto1.marka) && model.includes(auto1.model)) { 
    rez2.push(auto1); 
  } 
} 
console.log(rez2);

Кроме того у вас много ошибок синтаксиса.

  1. строки пишутся в кавычках var string = "str";
  2. элементы массива идут через ,
  3. в конце создания объекта после последнего поля не надо ставить ;
Answer 2

var auto = [{ 
  marka: "BMW", 
  model: "4k", 
  cuzov: "A" 
}, { 
  marka: "Merc", 
  model: "4k", 
  cuzov: "B" 
}, { 
  marka: "Audi", 
  model: "3k", 
  cuzov: "C" 
}, { 
  marka: "Toyota", 
  model: "1k", 
  cuzov: "D" 
}, { 
  marka: "Lexus", 
  model: "2k", 
  cuzov: "E" 
}, { 
  marka: "Rang", 
  model: "3k", 
  cuzov: "F" 
}, { 
  marka: "BMW", 
  model: "4k", 
  cuzov: "G" 
}, { 
  marka: "BMW", 
  model: "2k", 
  cuzov: "Y" 
}, { 
  marka: "Audi", 
  model: "3k", 
  cuzov: "U" 
}]; 
var marka = ['Audi', 'Rang', 'Merc']; 
var model = ["4k", "2k", "3k"]; 
 
// Создаем объекты для быстрого поиска 
function createObj(data) { 
  var res = {}; 
  for (var i in data) 
    res[data[i]] = 1; 
  return res; 
} 
var markaObj = createObj(marka); 
var modelObj = createObj(model); 
 
// Запускаем цикл поиска 
var search = []; 
for (var i in auto) { 
  if (markaObj[auto[i].marka] && modelObj[auto[i].model]) 
    search.push(auto[i]); 
} 
console.log(search);

READ ALSO
react-dates закрыть календарь

react-dates закрыть календарь

Кто в курсе как можно в любой удобный момент закрыть DateRangePicker, к примеру после клика по добавленной кнопке внутрь календаря "Reset Dates" которая...

219
Помогите решить простую задачу

Помогите решить простую задачу

Нужно написать код который посчитает сколько 9 в числеНапример дано число 929, должно вывести 2

244