2017-10-13 27 views
-1

我有一個狀態「Bill」,我想用「ProductID」刪除「Product」中的一個項目。那我該怎麼做呢?如何刪除aray對象中的一個項目並在此之後更新狀態?

Bill = { 
    "Bill_ID" : "a00231", 
    "Products" : [ 
    { 
     "ProductID" : "P0203", 
     "ProductName" : "ABCD" 
    }, 
    { 
     "ProductID" : "P023243", 
     "ProductName" : "ZYZ" 
    } 
    ] 
} 

如何刪除產品項目後更新狀態?

+1

請張貼代碼,要求解決方案沒有初始鬥爭沒有幫助。 – buoyantair

+0

可能重複的[Javascript:如何過濾基於屬性的對象數組?](https://stackoverflow.com/questions/2722159/javascript-how-to-filter-object-array-based-on-attributes) – bennygenel

回答

0

我認爲你可以使用pop()方法。您可以彈出產品陣列中的最後一個元素,查看彈出的元素。喜歡的東西:

var poppedElement = Bill.Products.pop(); 
console.log(Bill)    //Bill withoug last Products element 
console.log(poppedElement)  //just the last element of Products 

不知道這是否會完全工作過我的頭頂,但希望會給你一個起點,至少:)

看看這個鏈接獲取更多信息: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/pop

讓我知道它是怎麼回事!

+0

thats假設他想刪除最後一個項目 – wgcrouch

+0

啊,忘記了「ProductId」,被拿走了,對不起! –

0

您可以在bill.products陣列使用filter,像以下(注意必須是!=不能==

bill.products.filter(x => x != yourDesiredToBeDeletedId) 

款待this.state就好像它是不可變的

由於您state包含一個對象內的數組,我建議使用lodash's cloneDeep

let newBill = _.cloneDeep(this.bill); 
newBill.products = newBill.products.filter(x => x != yourDesiredToBeDeletedId); 
this.setState(bill: newBill); 
相關問題