Как получить цикл forEach или .map () для возврата или отображения определенных данных после их изменения с помощью фильтров? - PullRequest
1 голос
/ 19 июня 2019

Я относительно новичок в JavaScript.Я не знаю, что я делаю ...

Я прошел курс Колта Стила.Я знаю, что это устарело.Я работал с React, но я вернулся к старому материалу, потому что я думаю, что важно изучить некоторые фундаментальные вещи.Я верю, что это покалечит меня, если я не знаю основ ...

Я пытался создать приложение для недвижимости, для моего портфолио.Я настроил новый сервер, и я пытался выяснить логику ... Как бы мне, как только я получу массив объектов, проходящих через forEach или .map (), изменить эти данные с помощьюфильтры.Я делаю это, используя EJS.

Как мне получить списки для изменения или определенные списки для отображения, а другие нет в EJS?

Я поместил свои переменные «списки» внутри своего »Файл app.js, вверху.Я поместил свой цикл в мой файл lists.ejs.Это отлично работает.Цикл и данные отображаются в моем файле 'ejs'.Но я даже не знаю, с чего начать, как я могу получить любые данные, которые я пытаюсь изменить, чтобы показать в forEach или .map ().Я поместил код внутри тега скрипта в моем «нижнем колонтитуле» «частичное», чтобы зафиксировать значение тегов «выбор» и «опция» в моем «заголовке» «частичное», и он возвращает «ноль» в консоли, когда яПопробуйте изменить значение в раскрывающемся списке.Эта ошибка возникает в файле lists.ejs.

// This is inside the 'app.js'

let listings = [
  {address: '251 North Bristol Avenue', image: "https://images.unsplash.com/photo-1470770841072-f978cf4d019e", city: "Los Angeles", price: 220000},
  {address: '14 N Moore St', image: "https://images.unsplash.com/photo-1498855926480-d98e83099315", city: "New York", price: 320000},
  {address: '129 W 81st St', image: "https://images.unsplash.com/photo-1485343034225-9e5b5cb88c6b", city: "New York", price: 520000}
]

app.listen(3000, function() {
  console.log("Server has started!")
});
<!-- This is inside the 'listings.ejs' -->

    <% listings.forEach(function(listing) { %>
      <div class="col-md-3 col-sm-6">
        <div class="thumbnail">
          <img src="<%= listing.image %>">
          <div class="caption">
            <h4><%= listing.address %></h4>
          </div>
        </div>
      </div>
    <% }) %>

Как я уже сказал, я не знаю, с чего начать ...

Я не знаюкак бы я заполнил свой тег 'options', т.е. тег 'select', городами, которые доступны в переменной 'lists'.Я предполагаю, проходя через них, используя forEach?И как только я нажму на него, как заставить его влиять на то, что происходит в forEach.

Я также не знаю, как я могу получить свою цену 'asc' и 'dsc', чтобы повлиять на то, что происходит вforEach.

filteredData = () => {
  let newData = list.filter((a, b) => {
    return b.price - a.price
  })
}

Суть в том, что я не знаю, как бы получить какие-либо данные моего фильтра из 'partials', чтобы они отображались в моем цикле forEach для lists.ejs, когда я его изменял...

Также я не знаю, куда поместить код и / или как их соединить.Извините, если это основной ...

Ответы [ 2 ]

0 голосов
/ 19 июня 2019

Для сортировки массива вы можете использовать функцию сортировки в js вместо фильтра.

  filteredData = (list) => {
  let newData = list.sort((a, b) => {
    return b.price - a.price
  })
}
0 голосов
/ 19 июня 2019

Вам нужно просто применить фильтр к вашему массиву и поймать результат следующим образом:

var words = ['spray', 'limit', 'elite', 'exuberant', 'destruction', 'present'];
const result = words.filter(word => word.length > 6);
console.log(result);
// expected output: Array ["exuberant", "destruction", "present"] 

Так что для вашего случая вам просто нужно изменить свою функцию, передав массив:

filteredData = (list) => {
  let newData = list.filter((a, b) => {
    return a - b
  });
    console.log(newData);
  return newData;
}

let arr = [1, 5, 2, 12, 9, 8];
filteredData(arr);
...