2016-09-28 250 views
-2

我試圖篩選出一個對象,但不工作....過濾對象JS

這是代碼:

let obj = Object.assign({},[{ 
     "_id": 1, 
     "fecha": "2016-09-28T20:49:00.000Z" 
    }, { 
     "_id": 2, 
     "fecha": "2016-09-26T20:48:00.000Z" 
    }, { 
     "_id": 3, 
     "fecha": "2016-09-26T21:04:00.000Z" 
    }, { 
     "_id": 4, 
     "fecha": "2016-09-23T21:02:00.000Z" 
    }, { 
     "_id": 14, 
     "fecha": "2016-09-24T21:02:00.000Z" 
    }, { 
     "_id": 15, 
     "fecha": "2016-09-24T21:01:00.000Z" 
    }, { 
     "_id": 17, 
     "fecha": "2016-09-23T19:04:00.000Z" 
    }, { 
     "_id": 18, 
     "fecha": "2016-09-23T19:24:00.000Z" 
    }, { 
     "_id": 23, 
     "fecha": "2016-09-23T21:04:00.000Z" 
    }] 
); 
console.log(obj); 

let result = obj.filter(item => item._id == 1)[0]; 
console.log(result); 

結果是:

對象{0:Object,1:Object,2:Object,3:Object,4:Object,5:Object,6:Object,7:Object,8:Object} 未捕獲(承諾)TypeError:obj.find不是一個函數(...)

注:obj不在函數中定義,它來自另一個系統,但我寫出來顯示您的赤字

+0

過濾器是一個陣列的方法。如果你做'let obj = [{'那麼沒有錯誤 – mplungjan

+0

你不能對'Object'做一個過濾器。 –

+0

'Object.assign({},[])'毫無意義。 – igl

回答

1

我不能在Object上使用Array的方法。假設您將收據obj變量作爲對象。您應該將其轉換爲數組。嘗試:

Object.keys(obj).map((i) => obj[i]).filter(e => e._id === 1) 
+0

非常感謝你! –

+0

檢查它作爲答案關閉您的問題,請。謝謝 ! =) –