javascript - 优化数组的结果

标签 javascript reactjs firebase-realtime-database

我从 Firebase 查询返回结果。结果是一组具有不同属性的对象。这是我正在制作的汽车应用程序。每个对象看起来像这样

{
   make: "make",
   model: "model",
   year: "year",
   gas: "petrol",
   mileage: "mileage",
   images: {
       image1: "url",
       image2: "url"
   }
}

我需要让用户能够改进这些结果,我正在努力想出一个可靠的解决方案

问题: 我需要用户能够优化 firebase 查询的结果。 用户会为他们的精细搜索选择不同的选项,所以我需要我的函数来处理这个问题

我要去哪里

//Heres' how I planned to pass the refinement options
refinements = {
    make: 'value',
    model: 'value',
    year: 'value'
}

//currentResults is an array of objects with different properties

const refineResults = (currentResults, refinements) => {

    newResults = [];

    for (int i = 0; i < currentResults.count; i++ ){

        let currentResult = currentResult[i];

        for(int i = 0; i < refinements.count; i++){

        }
    }
}

我知道我对这个功能还不是很了解,但我什至不确定我是否以正确的方式处理这个问题。我不确定如何通过 for 循环访问属性值,作为改进。[I] 比较没有意义

我基本上想遍历我当前的结果,如果我的优化对象中的所有值都相等,那么我想将这个结果添加到我的新结果数组中。

感谢任何输入

最佳答案

像这样的东西就可以了:

refinements = {
    make: 'Toyota',
    model: 'RAV4',
    year: '2010'
}

var currentResults = [
  { make: 'Toyota', model: 'Matrix', year: '2012' },
  { make: 'Toyota', model: 'RAV4', year: '2010' },
  { make: 'Chevrolet', model: 'Matiz', year: '2000' }
];

//currentResults is an array of objects with different properties

const refineResults = (currentResults, refinements) => {
    return currentResults.filter((car) => {
        /*var result = true;
        Object.keys(refinements).forEach(refinement => {
            if (car[refinement] !== refinements[refinement]) result = false;
        });
        return result;*/
        return !Object.keys(refinements).some(refinement => car[refinement] !== refinements[refinement]);

    });
}

console.log(refineResults(currentResults, refinements));

使用的关键概念:

  • 代码使用Array.filter将当前结果过滤为仅匹配优化的结果。
  • 代码使用Object.keys仅确定改进的键(makemodelyear),以便它可以使用 Array.some 遍历它们(或注释掉的 Array.forEach )。
  • *

关于javascript - 优化数组的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49114051/

相关文章:

javascript - 未捕获引用错误 BufferLoader 未定义

javascript - 单击提交按钮后将类添加到页脚

javascript - 如何在 Firebase 数据库中使用 Groupby

javascript - 如果对象附加了函数/方法,如何将 Javascript 对象保存到 Firebase?

ios - Swift 函数在应用程序中有效,但在 override func viewDidLoad() 中无效

javascript - 什么时候用 null 或根本不初始化 JavaScript 中的变量?

javascript - 如何使用带有 greasemonkey 的 google maps api 读取地址表并跟踪路线?

html - 如何修复我的 React/ElectronJS View 的大小?

javascript - React-Redux 与 webpack 给出错误 Uncaught TypeError : Super expression must either be null or a function, not undefined

reactjs - React Noob - onChange 元素失去焦点