【问题标题】:JSON array filter does not applyJSON 数组过滤器不适用
【发布时间】:2018-02-07 02:02:14
【问题描述】:

我正在尝试从数组中过滤数据,但它会抛出一个错误提示

filter() 不起作用

代码如下:

var selectedObject = [];
selectedObject= JSON.stringify(formsDataSource.data());
//console.log(selectedObject);

//var filtered = $.grep(selectedObject, function (el) {
//    return el.po_order_no = 18;
//});
//console.log((filtered));
if (selectedObject == undefined) {
    alert("Undefined");
} else {
    var data= selectedObject.filter(function (element) { return element.po_order_no = "18"; })
    alert("" + data);
}

我尝试了很多东西,但它仍然抛出错误。有什么帮助吗?

【问题讨论】:

  • selectedObject= JSON.stringify(formsDataSource.data()) 似乎暗示 selectedObject 是一个字符串。字符串没有.filter 方法。尽管我注意到您在将其声明为空数组后立即执行此操作。这是故意的吗?为什么声明后要覆盖一行?
  • 我尝试使用 .push().. 没有错误但没有数据
  • 你为什么要 json.stringifying 呢?如果 formsDataSource.data() 返回一个数组,就跳过 stringify (也许在函数末尾做?)
  • formsDataSource.data() 返回一个 [object, object, object] 以使其可读我正在使用 json.stringify()
  • 听起来 [object, object, object] 是你想要的,json.stringify 将其更改为字符串 - 你无法过滤字符串。

标签: javascript jquery arrays json filter


【解决方案1】:

观察很少:

  • selectedObject= JSON.stringify(formsDataSource.data());

    该语句声明 selectedObject 是一个字符串。字符串没有filter() 方法。

  • 过滤器函数内的条件应该是element.po_order_no == "18"而不是element.po_order_no = "18"

解决方案:

var selectedObject = [
{
  "po_order_no": 18,
  "po_order_name": "abc"
},
{
  "po_order_no": 19,
  "po_order_name": "xyz"
}
];

if (selectedObject == undefined) {
    console.log("Undefined");
} else {
    var data = selectedObject.filter(element => element.po_order_no == "18")
    console.log(data);
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-08
    • 2019-04-18
    • 1970-01-01
    • 2019-12-13
    • 1970-01-01
    • 2015-05-08
    • 1970-01-01
    相关资源
    最近更新 更多