JSON数组过滤器不适用

时间:2018-02-07 02:02:15

标签: javascript jquery arrays json filter

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

  

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

我尝试过很多东西,但它仍然是一个错误。有什么帮助吗?

2 个答案:

答案 0 :(得分:0)

return语句中,您必须比较值而不是赋值。

变化:

return element.po_order_no = "18";

return element.po_order_no == "18";

此外,数据可能存在一些问题。带样本数据的解决方案

var selectedObject = [ { age: 25, po_order_no: "25" }, { age: 22, po_order_no: "18" }, { age: 15, po_order_no: "20" } ];
if (selectedObject == undefined) {
    console.log("Undefined");
} else {
var data= selectedObject.filter(function (element) { return element.po_order_no == "18"; })
console.log(data);
}

答案 1 :(得分:0)

很少有观察结果:

  •   

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