我一直在努力創建一個帶有 source 和 keys 引數的 omit 函式,它檢查源中的鍵,如果找到它們,則從源中省略這些屬性,然后使用剩余的鍵創建一個新的物件文字/源中的值對。到目前為止,我一直沒有成功,并且只能創建一個與使用源中找到的鍵創建物件相反的函式。誰能幫我弄清楚我錯過了什么?將不勝感激!
function omit(source, keys) {
var includedSource = {};
for (var key in source) {
for (var i = 0; i < keys.length; i ) {
if (keys[i] !== key) {
includedSource[key] = source[key];
console.log('source[keys[i]]:', source[keys[i]]);
console.log('includedSource:', includedSource);
}
}
}
return includedSource;
}
function omit(source, keys) {
var includedSource = {};
for (var key in source) {
for (var i = 0; i < keys.length; i ) {
if (keys[i] === key) {
includedSource[key] = source[key];
console.log('source[keys[i]]:', source[keys[i]]);
console.log('includedSource:', includedSource);
}
}
}
return includedSource;
}
uj5u.com熱心網友回復:
這是一個帶有平面物件的簡單實作。如果您的物件可能是嵌套的,我不確定如何宣告鍵,并且您希望提取一些 N 級嵌套值/鍵
const obj = {
A: 1,
B: 2,
C: 3,
D: 4
};
function omit(data, keys) {
let result = {};
for (let key in data) {
if (keys.includes(key)) continue;
result[key] = data[key];
}
return result;
}
console.log(omit(obj, ["A", "D"])) // {B: 2, C: 3}
uj5u.com熱心網友回復:
一種方法是使用Object.entries()并過濾出具有不需要的鍵的條目,然后用于Object.fromEntries()從過濾的條目中創建新物件
const omit = (data, keys) => {
return Object.fromEntries(
Object.entries(data).filter(([k]) => !keys.includes(k))
)
}
console.log(omit({ a:1,b:2,c:3,d:4}, ['a', 'b']))
uj5u.com熱心網友回復:
轉換為條目,Object.entries然后Object.fromEntries過濾所述條目<Array>.filter可能會很好地作業:
const omit = (obj, keys) => Object.fromEntries(Object.entries(obj).filter(a=>!keys.includes(a[0])));
uj5u.com熱心網友回復:
您可以解構并為新物件休息。
function omit(object, keys) {
let _; // prevent to be global
for (const key of keys) ({ [key]: _, ...object } = object);
return object;
}
console.log(omit({ a: 1, b: 2, c: 3, d: 4 }, ['b', 'c']));
uj5u.com熱心網友回復:
您的解決方案的問題是,即使不等于,keys[i 1]也可能等于。keykeys[i]
要更正您的代碼,請應用以下更改。
function omit(source, keys) {
var includedSource = {};
for (var key in source) {
if(!keys.includes(key)) { // <--- Change this
includedSource[key] = source[key];
console.log('source[keys[i]]:', source[keys[i]]);
console.log('includedSource:', includedSource);
}
}
return includedSource;
}
另一種方法,只是為了好玩。
function omit(source, keys) {
return Object.keys(source).reduce((acc, curr) => {
return {...acc, ...(keys.includes(curr) ? {} : {[curr]: source[curr]})}
}, {})
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/412375.html
標籤:
上一篇:撰寫一個函式來運行多個回歸模型,并在R中改變自變數和改變因變數
下一篇:使用函式屬性是一種好習慣嗎?
