假設我有一個看起來像這樣的物件陣列,它代表資料庫中的所有記錄:
let data1 = [
{"name": "ethan", "age": 18, "class": "A", "grade": 83},
{"name": "sam", "age": 13, "class": "A", "grade": 43},
{"name": "mark", "age": 14, "class": "D", "grade": 33},
{"name": "dick", "age": 14, "class": "B", "grade": 85},
{"name": "luke", "age": 15, "class": "A", "grade": 93},
{"name": "adam", "age": 5, "class": "C", "grade": 55},
]
我想根據一些列名“名稱”和“類”執行連接,因為它們是主鍵。
let cols = ["name", "class"];
現在我有另一個物件陣列
let data2 = [
{"name": "ethan", "age": 48, "class": "A", "grade": 49},
{"name": "dick", "age": 24, "class": "B", "grade": 43},
]
我想要一個回圈遍歷 data1 中每條記錄的函式,然后檢查“名稱”值和“類”值是否與 data2 中在相同列中具有相同值的任何記錄相匹配。如果是,則 data1 記錄將被推送到一個新陣列。新陣列將在函式結束時回傳。
例如,該函式將從 data1 中的第一項{"name": "ethan", "age": 18, "class": "A", "grade": 83}開始,并在中查找匹配的記錄data2 也具有名稱“ethan”和類“A”,忽略其他列的值,如果找到匹配項,則{"name": "ethan", "age": 18, "class": "A", "grade": 83}被推送到輸出陣列。
這是我想象的函式的樣子,我希望選中的鍵作為陣列傳遞,以便解決方案是動態的。
function getSubset(cols, data1, data2) {
let output = [];
for (let i = 0; i < data1; i ) { //loop through each item in data1
let item = data1[I];
//checks here
//if match found in data2, push to output array
}
return output;
}
//expected output =
//[ {"name": "ethan", "age": 18, "class": "A", "grade": 83},
// {"name": "dick", "age": 14, "class": "B", "grade": 85},
//]
uj5u.com熱心網友回復:
您可以利用各種陣列函式來實作它:
let data1 = [
{"name": "ethan", "age": 18, "class": "A", "grade": 83},
{"name": "sam", "age": 13, "class": "A", "grade": 43},
{"name": "mark", "age": 14, "class": "D", "grade": 33},
{"name": "dick", "age": 14, "class": "B", "grade": 85},
{"name": "luke", "age": 15, "class": "A", "grade": 93},
{"name": "adam", "age": 5, "class": "C", "grade": 55},
];
let data2 = [
{"name": "ethan", "age": 48, "class": "A", "grade": 49},
{"name": "dick", "age": 24, "class": "B", "grade": 43},
]
let cols = ["name", "class"];
function getSubset(cols, data1, data2) {
return data1.filter(d1 => data2.some(d2 => cols.every(key => d1[key] === d2[key])));
}
const result = getSubset(cols, data1, data2);
console.log(result);
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/534358.html
標籤:javascript节点.jsJSON算法javascript对象
上一篇:簡易血槽殘影設計方案(使用協程)
