我具有低於陣列對象鍵,比較陣列在javascript
["aa","bb"]
我具有低於對象,
{"aa":1,"bb":2,"cc":3}
,我需要下面導致,
{"cc":3}
我需要比較數組與對象鍵,使用循環是可能的,但它需要更多的時間來處理大量的數據,有沒有其他最快的方法來獲得我的r eshel沒有使用循環,Anyhelp讚賞...
我具有低於陣列對象鍵,比較陣列在javascript
["aa","bb"]
我具有低於對象,
{"aa":1,"bb":2,"cc":3}
,我需要下面導致,
{"cc":3}
我需要比較數組與對象鍵,使用循環是可能的,但它需要更多的時間來處理大量的數據,有沒有其他最快的方法來獲得我的r eshel沒有使用循環,Anyhelp讚賞...
爲了避免二次的時間複雜度,你可以使用一個設置,並傳遞作爲this
參數過濾器。然後從這些過濾鍵與Object.assign
重構的對象:
var a = ["aa","bb"];
var b = {"aa":1,"bb":2,"cc":3};
var difference = Object.assign(...Object.keys(b).filter(function(e){
return !this.has(e);
}, new Set(a)).map(key => ({ [key]: b[key] })));
console.log(difference);
也許這樣的事情?
var a = ["aa","bb"];
var b = {"aa":1,"bb":2,"cc":3};
var result = {};
Object.keys(b).filter(function(e){
return a.indexOf(e) < 0;
}).forEach(function(e){
result[e] = b[e];
});
console.log(result);
遍歷對象和檢查,看看是否該屬性不數組中存在:
var a = ["aa","bb"];
var o = {"aa":1,"bb":2,"cc":3};
// Loop through object
for(var prop in o){
// If property doesn't exist in array...
if(a.indexOf(prop) === -1){
console.log(prop + ":" + o[prop]);
}
}
我想用'.hasOwnProperty'會更好 – Rajesh
@Rajesh OP沒有說任何關於繼承屬性的東西。 –
您可以依次通過對象並將對象鍵與數組項相比較,並將缺少的鍵作爲對象返回。
var a = ["aa","bb"] ;
var o = {"aa":1,"bb":2,"cc":3,'dd':4};
function get(o){
var p = {};
for(var key in o){
\t if(a.indexOf(key) == -1){
\t \t \t p[key] = o[key];
}
}
return p;
}
var c = get(o);
console.log(c);
可以使用Object.assign()
,Object.entries()
,Array.prototype.includes()
以確定在對象當前鍵是數組的一個元素,採用計算出的屬性返回對象或虛假的,這不會導致財產被分配到新對象
var arr = ["aa","bb"]
var obj = {"aa":1,"bb":2,"cc":3}
var res = Object.assign({}
, ...Object.entries(obj).map(([key, prop]) =>
!arr.includes(key) && {[key]:prop})
);
console.log(res);
如果您可以改變對象,則可以使用delete
刪除不需要的屬性。
const props = ["aa","bb"];
const obj = {"aa": 1,"bb": 2,"cc": 3};
props.forEach(prop => delete obj[prop]);
console.log(obj);
或者只是循環屬性名稱的陣列for...of
過來。
const props = ["aa","bb"];
const obj = {"aa": 1,"bb": 2,"cc": 3};
for (prop of props) delete obj[prop];
console.log(obj);
如果你不想發生變異的對象,而是創建一個沒有他一個新的不必要的屬性,然後你可以先做一個淺克隆與
newObj = {...obj};
@Nina'道具'應該是數組,所以'(道具的道具)'一個接一個地取值。我澄清了這一點。 –
你可以分享你嘗試過的嗎? – Rajesh
所以,你想在對象中找到不存在於數組中的屬性? –
可能要實現這樣的功能:https://stackoverflow.com/questions/1187518/javascript-array-difference – Mike