我正在尝试从数组中过滤数据,但是它会抛出错误
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);
}
我尝试过很多东西,但它仍然是一个错误。有什么帮助吗?
答案 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);
}