這讓我瘋狂。我創建了一個包含多個條目的列表。我添加了一個過濾功能,似乎工作正常。我已經檢查過返回結果的數量,但不知何故,它只是顯示從第一行開始的結果編號。反應 - 過濾返回錯誤的行
對於解釋:
假設我搜索「佐南」和我的過濾函數返回4行ID爲23,25,59和60,行與ID的1,2,3和4的顯示方式。我做錯了什麼!?
...
render() {
let filteredList = this.state.freights.filter((freight) => {
let search = this.state.search.toLowerCase();
var values = Object.keys(freight).map(function(itm) { return freight[itm]; });
var flag = false;
values.forEach((val) => {
if(val != undefined && typeof val === 'object') {
var objval = Object.keys(val).map(function(objitm) { return val[objitm]; });
objval.forEach((objvalue) => {
if(objvalue != undefined && objvalue.toString().toLowerCase().indexOf(search) > -1) {
flag = true;
return;
}
});
}
else {
if(val != undefined && val.toString().toLowerCase().indexOf(search) > -1) {
flag = true;
return;
}
}
});
if(flag)
return freight;
});
...
<tbody>
{
filteredList.map((freight)=> {
return (
<Freight freight={freight} onClick={this.handleFreightClick.bind(this)} key={freight.id} />
);
})
}
</tbody>
...
UPDATE
freights
被加載並且通過AJAX JSON結果填充。的freights
目的之一是這樣的:
我有一個文本框,用戶可以在其中進行搜索。此搜索應返回屬性包含搜索字符串的所有freight
對象。
filter
太複雜了,因爲我也想在貨運的子對象中搜索。也許有一個更簡單的方法?
「區域」只是用戶可以搜索的搜索字符串的示例。
請在原始帖子中查看我的更新。還有什麼不清楚的地方嗎? –
更新了我的答案。檢查出來,並提供反饋:) – Denialos
感謝您的幫助,但現在它給我的錯誤'太多遞歸'。我需要檢查,如果也許有一個無限循環。 –