我有這個函式,它將兩個串列作為引數。串列“L”的每個元素的第一個字母是圖書類別的標識。例如,“BKWR”和“BTSQ”是同一個類別的書籍,因為它們以相同的字母“B”開頭。由空格分隔的正整數是該類別的書籍數量。現在該函式的作用是獲取第一個串列并從第二個串列匹配以字母開頭的書籍類別是否存在。如果存在,則對數字求和。例如,在串列“L”中存在兩個以“B”開頭的書籍類別,因此應該將它們相加。
但是,我的函式不是將兩者相加,而是覆寫先前“B”類別的值。如何阻止它覆寫該值?
function extract(list,stocklist){
let newArr = [];
for (let i = 0; i < stocklist.length; i ){
for (let j = 0; j < list.length; j ){
if (stocklist[i] == list[j][0]){
newArr.push(list[j]);
}
}
}
let selected = newArr.map((item) => item.split(' '));
let extracted = {};
for (let k = 0; k < selected.length; k ){
for (let l = 0; l < selected[k].length-1; l ){
let key = selected[k][l][0];
let value = selected[k][l 1];
extracted[key] = value;
}
}
return extracted;
}
let L = ["ABAR 200", "CDXE 500", "BKWR 250", "BTSQ 890", "DRTY 600"];
let M = ["A", "B", "W"];
console.log(extract(L,M));
uj5u.com熱心網友回復:
如果該鍵已經有一個值,請添加它而不是覆寫它。所以改變
extracted[key] = value;
到
if (key in extracted) {
extracted[key] = parseInt(value);
} else {
extracted[key] = parseInt(value);
}
uj5u.com熱心網友回復:
您實際上需要將“值”添加到您的extracted物件中:
function extract(list,stocklist){
let newArr = [];
for (let i = 0; i < stocklist.length; i ){
for (let j = 0; j < list.length; j ){
if (stocklist[i] == list[j][0]){
newArr.push(list[j]);
}
}
}
let selected = newArr.map((item) => item.split(' '));
let extracted = {};
for (let k = 0; k < selected.length; k ){
for (let l = 0; l < selected[k].length-1; l ){
let key = selected[k][l][0];
let value = selected[k][l 1];
if(value) {
extracted[key] = ( extracted[key] || 0) value;
}
}
}
return extracted;
}
let L = ["ABAR 200", "CDXE 500", "BKWR 250", "BTSQ 890", "DRTY 600"];
let M = ["A", "B", "W"];
console.log(extract(L,M));
uj5u.com熱心網友回復:
這是您缺少的次要部分。檢查鍵并總結,或者簡單地分配第一個值,如:
extracted[key] = extracted[key] ? extracted[key] Number(value) : Number(value);
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/377261.html
標籤:javascript html css 算法 功能
