我真的不知道我在哪里失敗了,我嘗試了 1000 種方法,但我做不到。
function userCheck (arr1,arr2) {
let map = {};
arr1.filter((user) => {
arr2.filter((obj) => {
if (user == obj.user) {
map[user] = obj;
}
else {
map['untracked'] = [user];
}
});
});
console.log(map)
}
userCheck([39471379, 44471379, 25471379, 35471379, 29471379,55471379],[{user: 39471379, salary: 250000}, {user: 44471379, salary: 260000}, {user: 35471379, salary: 148700},{user: 29471379, salary: 270500}]);
創建一個接收 2 個陣列的函式,一個包含用戶編號,另一個包含包含公司員工資料(用戶編號和薪水)的物件。應該創建一個物件,其中用戶編號是鍵,值將是包含所有資料的物件。// 如果沒有找到某個用戶的員工,則表示他不在該公司作業。因此,必須創建一個新條目,其中的鍵將是“未跟蹤的”,并且作為一個值,它將具有一個包含所有未找到的用戶編號的陣列。
expected Output:
{39471379: {ID: 39471379, salary: 250000},
44471379: {ID: 44471379, salary: 260000},
35471379: {ID: 35471379, salary: 148700},
29471379: {ID: 29471379, salary: 270500},
"untracked": [25471379,55471379]}
uj5u.com熱心網友回復:
您可以構建一個包含所有用戶資料的物件,并通過檢查物件來減少用戶的 id 并獲得想要的資料結構。
function userCheck(users, data) {
const ids = Object.fromEntries(data.map(o => [o.user, o]));
return users.reduce((r, user) => {
if (ids[user]) r[user] = ids[user];
else r.untracked.push(user);
return r;
}, { untracked: []});
}
const
users = [39471379, 44471379, 25471379, 35471379, 29471379, 55471379],
data = [{ user: 39471379, salary: 250000 }, { user: 44471379, salary: 260000 }, { user: 35471379, salary: 148700 }, { user: 29471379, salary: 270500 }],
result = userCheck(users, data);
console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }
uj5u.com熱心網友回復:
使用一個回圈和的組合find。
const ids = [39471379, 44471379, 25471379, 35471379, 29471379,55471379];
const users = [{user: 39471379, salary: 250000}, {user: 44471379, salary: 260000}, {user: 35471379, salary: 148700},{user: 29471379, salary: 270500}];
function userCheck(ids, users) {
// Create two output arrays, one for the users
// that are found, the other for the untracked users
const output = [];
const untracked = [];
// Iterate over the ids array
for (const id of ids) {
// If there is a user matching that id...
const foundUser = users.find(user => {
return user.user === id;
});
// ...add the user object to the output array
if (foundUser) {
output.push({ [id]: foundUser });
// Otherwise push the id into the untracked array
} else {
untracked.push(id);
}
}
// Finally return the output array, and the
// tracked array as one merged array
return [...output, { untracked }];
}
console.log(userCheck(ids, users));
附加檔案
- 傳播語法
uj5u.com熱心網友回復:
我嘗試過結合使用 forEach 回圈和 find() 方法。
const ids = [39471379, 44471379, 25471379, 35471379, 29471379,55471379];
const users = [{user: 39471379, salary: 250000}, {user: 44471379, salary: 260000}, {user: 35471379, salary: 148700},{user: 29471379, salary: 270500}];
function userCheck (ids, users) {
let outputObj = {};
outputObj["untracked"] = [];
console.log(outputObj);
ids.forEach(element => {
const id = element;
const found = users.find(ele => ele.user === element);
if(found) {
outputObj[id] = {
[id] : found
}
} else {
outputObj["untracked"].push(id);
}
});
return outputObj;
const outputObj = userCheck(ids, users);
console.log(outputObj);
uj5u.com熱心網友回復:
您可以使用Array.prototype.reduce()o從陣列中為所有用戶創建一個data具有所需格式的物件,該物件將使用Spread 語法 (...)在結果物件中傳播,最后一次Array.prototype .filter()出不在物件屬性中的 iduntrackeduserso
代碼:
const users = [39471379, 44471379, 25471379, 35471379, 29471379, 55471379]
const data = [{ user: 39471379, salary: 250000 },{ user: 44471379, salary: 260000 },{ user: 35471379, salary: 148700 },{ user: 29471379, salary: 270500 }]
const userCheck = (users, data) => {
const o = data.reduce((a, c) => (a[c.user] = c, a), {})
return {
...o,
untracked: users.filter(user => !o[user])
}
}
console.log(userCheck(users, data))
.as-console-wrapper { max-height: 100% !important; top: 0; }
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/473969.html
標籤:javascript 数组 目的
上一篇:方法回傳NoneType物件
