2017-08-17 122 views
-2

我想從我的數組刪除對象,使用索引:濾波器陣列由指數

case DELETE_DRINK: 
      return { 
       drinks: state.drinks.filter((drink, i) => drink[i] != payload) 
      } 

然而,陣列保持不變,任何想法?

這裏是我的數組:

enter image description here

+0

什麼是「飲料」? –

+1

'state.drinks.filter((drink,i)=> drink [i]!= payload)'爲什麼試圖訪問'drink [i]'drink已經是你想要的元素 – Nocebo

回答

1

假設你有飲料裏面,不是數組,你可以使用元素本身的檢查。 Array#filter回調的第一個參數是

正在數組中處理的當前元素。

state.drinks.filter(drink => drink != payload) 
//       ^^^^^    // without index 
+0

謝謝,所以我可以刪除對象從其位置 – Bomber

2

你也可以使用splice通過索引中刪除項目:

array.splice(index, 1); // splices the item at index 

編輯:下面的方法不變異原array

var missing = array.slice().splice(index, 1); // first clones the array, and then splices off the item at index 
+0

小心不要改變狀態雖然 – Nocebo

+0

是的,我會編輯帖子 – clabe45

-1
case actionTypes.DELETE_NOTE: 
    return state.filter(note => note.id !== action.payload.id); 
case actionTypes.ANOTHER_WAY_TO_DELETE: 
    return state.map(lane => { 
    if (arrayFIRST.id === action.payload.id) { // id from second array 
     // THEN DO YOUR STAFF 
    } 

有工作的例子!你做得很複雜!

0
state.drinks.filter((drink, i, drinks) => drinks[i] != payload)