javascript - 如何从数组中返回匹配项之前的 2 个元素?

标签 javascript node.js

我只是在寻找最简单的方法来检查对象数组中的任何字段是否具有值 0 并返回包含值 0 的对象之前的前两个对象。

for(var = 0; i <= result.length; i++)
    {

        //so in my case, it will return result[1] and result[2]
    }

我该怎么办?

我的结果数据

result =  [
    { A: 1, B: 2, C: 41, D: 124 },
    { A: 123, B: 221, C: 397, D: 81 },
    { A: 123, B: 412, C: 400, D: 454 },
    { A: 0, B: 412, C: 400, D: 454 }]

最佳答案

可以通过一种简单的方式完成:循环遍历对象,并为每个对象循环遍历其属性,一旦找到零,则返回前两项(按索引):

let result = [{ A: 1, B: 2, C: 41, D: 124}, { A: 123, B: 221, C: 397, D: 81}, { A: 123, B: 412, C: 123, D: 454}, { A: 0, B: 21, C: 53, D: 81}]

const getLastTwo = (objArray) => {
  for (let obj of objArray) {
    for (let prop in obj) {
      if (obj[prop] === 0) {
        const index = objArray.indexOf(obj)
        return [objArray[index-2], objArray[index-1]]
      }
    }
  }
  return [] // if we got here - no such element was found!
}

console.log(getLastTwo(result)) 
// [ { A: 123, B: 221, C: 397, D: 81 }, { A: 123, B: 412, C: 123, D: 454 } ]

关于javascript - 如何从数组中返回匹配项之前的 2 个元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47582430/

相关文章:

javascript - 单击时将菜单附加到 DOM,随后的单击仅创建列表项

Javascript 多重分配重新评估或结果传递?

javascript - 如何显示加载程序,直到 iframe 内容完全加载到 Angular 7 中

javascript - 使用 jQuery 键入时减小 TextArea 中文本的大小

javascript - npm 异步模块不执行最终回调

node.js - 我们能否以某种方式重命名正在使用 puppeteer 下载的文件?

node.js - Socket.io + co : Is this how it's supposed to be used?

node.js - 如何将可读流通过管道传递给 gulp.dest()?

javascript - 有没有办法在 express.js 路由中编写 html(或 jade 等)?

javascript - 导航菜单中的下划线过渡