通过过滤器更改某些数据后,如何让forEach循环或.map()返回或显示某些数据?

时间:2019-06-19 04:25:58

标签: javascript ejs

我对JavaScript比较陌生。我不知道我在做什么...

我一直在学习Colt Steele的课程。我知道它已经过时了。我一直在使用React,但是我又回到了较早的材料,因为我认为学习一些基本的知识很重要。如果我不了解基本知识,我相信它将使我瘫痪。

我一直在尝试为我的投资组合构建一个房地产应用程序。我已经建立了一个新服务器,并且一直在试图弄清楚逻辑……一旦我有一组对象遍历forEach或.map(),我将如何更改该数据呢?过滤器。我正在使用EJS进行此操作。

如何更改列表,或显示某些列表,而其他列表不在EJS中?

我将变量“ listings”放在“ app.js”文件的顶部。我将循环放入“ listings.ejs”文件中。很好循环和数据显示在我的“ ejs”文件中。但是我什至不知道从哪里开始,我将如何获取要更改的数据以显示在forEach或.map()中。我将代码放在脚本标签中的“页脚”“部分”中,以捕获“标头”“部分”中“ select”和“ option”标签的值,并且每当我在控制台中返回“ null”尝试更改下拉菜单中的值。此错误发生在“ listings.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>
    <% }) %>

就像我说的那样,我不知道从哪里开始...

我不知道如何在“选项”标签(即“选择”标签)中填充“列表”变量中可用的城市。我假设使用forEach遍历它们?然后,一旦我单击它,如何使其影响到forEach中发生的事情。

我也不知道如何获得价格“ asc”和“ dsc”来影响forEach中发生的事情。

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

最重要的是,当我更改它时,我不知道如何从“部分”中获取任何过滤器数据以显示在“ listings.ejs” forEach循环中……

我也不知道将代码放在哪里和/或如何以某种方式将它们连接起来。很抱歉,这是基本的...

2 个答案:

答案 0 :(得分:0)

您只需要对数组应用过滤器并捕获如下结果:

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);

答案 1 :(得分:0)

要对数组进行排序,可以使用js中的“排序”功能,而不是使用过滤器。

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