假設我有一個陣列。
[ '219_1_undefined', '244_1_undefined', '248_1_20//179 25//153', '221_6_undefined' ]/code>
在陣列中單個專案的分解是219_1_undefined基本上是219是product_id,1是數量,undefined是product_options我把這些資訊存盤在本地存盤。現在我有一個新的專案需要添加到購物車中,但是這個產品已經在購物車中,所以我想單獨添加數量(中間值)。所以我想在現有陣列中再次添加219_1_undefined。現在這個陣列將看起來像這樣。
[ '219_1_undefined', '244_1_undefined', '248_1_20//179 25//153', '221_6_undefined', '219_1_undefined' ]
我的問題是我不知道如何添加同一產品的中間值(數量),并得到像
這樣的結果。[ '244_1_undefined', '248_1_20//179 25//153', '221_6_undefined', '219_2_undefined' ]/code>
下面是我試過的代碼
。let pid = 219;
let qty = 1;
let params = "undefined"/span>;
let string = '219_1_undefined|244|1_undefined|248_1_20///179 25///153|221_1_undefined';
let items = string.split('|') 。
let nItem = pid '_'/span> qty '_'/span> params;
let mx = items;
mx = mx.filter(function (item) {
return item.indexOf(pid '_') !== 0;
});
mx.push(nItem)。
var result = mx.toLocaleString();
let nresult = result.split(',').join('|') 。
console.log(nresult);
<iframe name="sif1" sandbox="allow-forms allow-modals allow-scripts" class="snippet-box-edit snippet-box-result" frameborder="0"></iframe>
無論我做什么,我仍然得到錯誤的輸出。
uj5u.com熱心網友回復:
你可以嘗試使用Array.prototype.findIndex()獲取index,并使用該index更新陣列項:
let pid = 219;
let qty = 1;
let params = "undefined" ;
let items = ['219_1_undefined'/span>, '244_1_undefined'/span>, '248_1_20///179 25///153', '221_1_undefined'];
//通過匹配id從陣列中獲取專案的索引。
let index = items.findIndex(p => p。 split('_')[0] == pid)。)
//檢查陣列中是否存在任何專案。
if(index > -1){
//使用索參考新值更新陣列中的專案。
items[index] = pid '_' ( items[index].split('_') [1] qty) '_' params;
}
else{
//push new item to the arry[/span]。
items.push(pid '_'/span> qty '_'/span> params)。
}
console.log(items);
<iframe name="sif2" sandbox="allow-forms allow-modals allow-scripts" class="snippet-box-edit snippet-box-result" frameborder="0"></iframe>
uj5u.com熱心網友回復:
let pid = 219;
let qty = 1;
let params = "undefined"/span>;
let string = '219_1_undefined|244|1_undefined|248_1_20///179 25///153|221_1_undefined';
let items = string.split('|') 。
let i = 0;
for(; i < items.length; i ) {
let temp = items[i].split('_'/span>)。
if (temp[0] == pid & & temp[2] == params) {
qty = parseInt(qty) parseInt(temp[1] ) 。
break。
}
}
items[i] = `${pid}_${qty}_${params}。
string = items.join('|') 。
我測驗了這個,它似乎是有效的。if陳述句比較了他的ID和引數,但顯然你可以讓它只檢查ID,如果你想。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/334244.html
標籤:
