javascript - JS : ObservableArray Filtering

标签 javascript knockout.js

我有一个像下面这样的 observableArray,

var details = ko.observableArray([]);
details = [
      { AccName: "Jane Doe", ExpDt: '2019-01-10', Contract: "Trial" },
      { AccName: "John", ExpDt: '2018-12-30', Contract:  "Licensed"},
      { AccName: "Doe", ExpDt: '2018-09-10', Contract:  "Trial"}
];

由此,我需要根据 ExpDt 和 Contract 提取用户。

For Ex => ExpDt < today dt (2019-01-10) and having "trial" contract
Answer should be => Jane Doe

请给我一些关于如何做到这一点的建议。

最佳答案

使用Array#filter , destructuring , String#split , Spread operatorDate.UTC

const details=[{AccName:"Jane Doe",ExpDt:"2019-01-10",Contract:"Trial"},{AccName:"John",ExpDt:"2018-12-30",Contract:"Licensed"},{AccName:"Doe",ExpDt:"2018-09-10",Contract:"Trial"}];

const res = details.filter(({ExpDt, Contract})=>{
  const darr = ExpDt.split("-");
  //Date.UTC accepts months from 0 - 11
  darr[1] = darr[1] - 1;
  return Date.UTC(...darr) < Date.now() && Contract === "Trial";
})

console.log(res);

您会得到两个结果,因为 Doe 也符合要求:

ExpDt: 2018-09-10 < 2019-01-10
Contract: Trial === Trial

关于javascript - JS : ObservableArray Filtering,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54129752/

相关文章:

javascript - 未捕获的类型错误 : Cannot read property 'nodeType' of null

javascript - 通过package.json创建模块

javascript - 为什么下面的js代码不起作用?

javascript - 如何使html中的canvas元素可点击?

javascript - Knockout.js textInput 字段相互依赖

javascript - 如果从浏览器控制台提交,Knockoutjs 不会保存数据

javascript - 当选项卡处于非事件状态时,如何使进度条的 setInterval 起作用

javascript - Chrome 扩展程序可将代码注入(inject)到某些预定义的 URls 中

javascript - ko.mapping observableArray 始终触发订阅

knockout.js - 没有模板的 knockout 绑定(bind)到数组元素只能以一种方式工作