我有以下物件:
const myObject = {
"-Lz8YxHiwp8QZW3TqAFn": Object {
"first": "Breanna",
"last": "Blah",
},
"-Lz8YxHqQXWoaGOFRLrO": Object {
"first": "Joshua",
"last": "Blah",
},
"-Lz8YxHsMItaaTVNyQRE": Object {
"first": "Joziah",
"last": "Blah",
},
"-Lz8YxHwuVBMWl0Go6C5": Object {
"first": "Lino",
"last": "Blah",
},
"-Lz8YxHy0S-QkDaE1PkX": Object {
"first": "Rebecca",
"last": "Blah",
},
"-Lz8YxI5IItUiXX6rFn_": Object {
"first": "Rosario",
"last": "Blah",
},
"-Lz8YxIB_YTBF8liL855": Object {
"first": "Alissa",
"last": "Blah",
}
}
然后我有一個包含以下內容的集合:
const mySet = {
"-Lz8YxMp-V0TfiwrkM49",
"-Lz8YxNQP2WkkO0qpkRJ",
"-Lz8YxHy0S-QkDaE1PkX",
"-MmFNgjyopU3E8z5g-zU",
"-Lz8YxLVi_uZp_RkcRIH",
"-MuEgimJOIbPw3GyKBJ3",
"-Lz8YxOFpVHx2xPI1mUu",
"-Lz8YxJ-_wuk8bmEyvGT",
"-Lz8YxKj5WXY1oNwylQ4",
"-Lz8YxN87U1YM6_fKgq1",
"-Lz8YxOI4qszJvZhrSde",
"-Lz8YxI5IItUiXX6rFn_",
}
我只需要回傳與 mySet 中的專案匹配的物件的 myObject。我已經用地圖完成了這個,但它把 myObject 變成了一個陣列。下面使用 map 并回傳一個我不能用于這種特殊情況的陣列。
// const addGroupMembers = Object.entries(members)
// .filter(([key]) => {
// eachHit ;
// console.log(key)
// return attendanceGroupMembers.has(key);
// })
// .map(([_, members]) => {
// eachHit ;
// console.log('in map')
// return members;
// });
我想保留 myObject 結構,但只找到找到的專案。知道我怎么能做到這一點嗎?
uj5u.com熱心網友回復:
當然,只需使用 .reduce 分配給一個新物件:
const addGroupMembers = Object.entries(myObject).filter(entry =>
mySet.has(entry[0])).reduce((accum, [k, v]) => {
accum[k] = v;
return accum;
}, {});
uj5u.com熱心網友回復:
您可以myObject使用Object.entries()thenSet.has()與 with 一起使用轉換為條目陣列Array.filter(),最后使用Object.fromEntries()將過濾后的條目陣列轉換回物件:
const myObject = {
"-Lz8YxHiwp8QZW3TqAFn": { first: "Breanna", last: "Blah" },
"-Lz8YxHqQXWoaGOFRLrO": { first: "Joshua", last: "Blah" },
"-Lz8YxHsMItaaTVNyQRE": { first: "Joziah", last: "Blah" },
"-Lz8YxHwuVBMWl0Go6C5": { first: "Lino", last: "Blah" },
"-Lz8YxHy0S-QkDaE1PkX": { first: "Rebecca", last: "Blah" },
"-Lz8YxI5IItUiXX6rFn_": { first: "Rosario", last: "Blah" },
"-Lz8YxIB_YTBF8liL855": { first: "Alissa", last: "Blah" },
};
const mySet = new Set([
"-Lz8YxMp-V0TfiwrkM49",
"-Lz8YxNQP2WkkO0qpkRJ",
"-Lz8YxHy0S-QkDaE1PkX",
"-MmFNgjyopU3E8z5g-zU",
"-Lz8YxLVi_uZp_RkcRIH",
"-MuEgimJOIbPw3GyKBJ3",
"-Lz8YxOFpVHx2xPI1mUu",
"-Lz8YxJ-_wuk8bmEyvGT",
"-Lz8YxKj5WXY1oNwylQ4",
"-Lz8YxN87U1YM6_fKgq1",
"-Lz8YxOI4qszJvZhrSde",
"-Lz8YxI5IItUiXX6rFn_",
]);
const myObjectFiltered = Object.fromEntries(
Object.entries(myObject).filter(([key]) => mySet.has(key))
);
console.log(myObjectFiltered);
uj5u.com熱心網友回復:
這個問題對我來說有點令人困惑抱歉,但我希望這能有所幫助:
基本上,在 javascript 中,要直接更改現有物件以洗掉元素,而不是創建更改后的副本,您可以使用:
delete someObject[key]
它將直接更改您的物件,這將適用于參考它的所有內容。
因此 :
const myObject = {
"-Lz8YxHiwp8QZW3TqAFn": {
"first": "Breanna",
"last": "Blah",
},
"-Lz8YxHqQXWoaGOFRLrO": {
"first": "Joshua",
"last": "Blah",
},
"-Lz8YxHsMItaaTVNyQRE": {
"first": "Joziah",
"last": "Blah",
},
"-Lz8YxHwuVBMWl0Go6C5": {
"first": "Lino",
"last": "Blah",
},
"-Lz8YxHy0S-QkDaE1PkX": {
"first": "Rebecca",
"last": "Blah",
},
"-Lz8YxI5IItUiXX6rFn_": {
"first": "Rosario",
"last": "Blah",
},
"-Lz8YxIB_YTBF8liL855": {
"first": "Alissa",
"last": "Blah",
}
}
const mySet = [
"-Lz8YxMp-V0TfiwrkM49",
"-Lz8YxNQP2WkkO0qpkRJ",
"-Lz8YxHy0S-QkDaE1PkX",
"-MmFNgjyopU3E8z5g-zU",
"-Lz8YxLVi_uZp_RkcRIH",
"-MuEgimJOIbPw3GyKBJ3",
"-Lz8YxOFpVHx2xPI1mUu",
"-Lz8YxJ-_wuk8bmEyvGT",
"-Lz8YxKj5WXY1oNwylQ4",
"-Lz8YxN87U1YM6_fKgq1",
"-Lz8YxOI4qszJvZhrSde",
"-Lz8YxI5IItUiXX6rFn_",
]
for (const i in myObject)
if (!mySet.includes(i))
delete myObject[i];
console.log(myObject);
一個例子。抱歉更改語法,但看起來很奇怪,希望對您有所幫助。
uj5u.com熱心網友回復:
使用Array#reduce和計算的屬性名稱:
const yourObject={"-Lz8YxHiwp8QZW3TqAFn":{first:"Breanna",last:"Blah"},"-Lz8YxHqQXWoaGOFRLrO":{first:"Joshua",last:"Blah"},"-Lz8YxHsMItaaTVNyQRE":{first:"Joziah",last:"Blah"},"-Lz8YxHwuVBMWl0Go6C5":{first:"Lino",last:"Blah"},"-Lz8YxHy0S-QkDaE1PkX":{first:"Rebecca",last:"Blah"},"-Lz8YxI5IItUiXX6rFn_":{first:"Rosario",last:"Blah"},"-Lz8YxIB_YTBF8liL855":{first:"Alissa",last:"Blah"}};
const yourSet = ["-Lz8YxMp-V0TfiwrkM49", "-Lz8YxNQP2WkkO0qpkRJ", "-Lz8YxHy0S-QkDaE1PkX", "-MmFNgjyopU3E8z5g-zU", "-Lz8YxLVi_uZp_RkcRIH", "-MuEgimJOIbPw3GyKBJ3", "-Lz8YxOFpVHx2xPI1mUu", "-Lz8YxJ-_wuk8bmEyvGT", "-Lz8YxKj5WXY1oNwylQ4", "-Lz8YxN87U1YM6_fKgq1", "-Lz8YxOI4qszJvZhrSde", "-Lz8YxI5IItUiXX6rFn_"];
let result = yourSet.reduce((acc, e, i) => {
if (Object.keys(yourObject).includes(e))
acc = { ...acc, [e]: yourObject[e]}
return acc
}, {})
console.log(result)
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/442112.html
