簡體   English   中英

使用ramda修改對象數組中的屬性

[英]Using ramda to modify a property in array of Objects

我正在嘗試使用ramda從對象數組中刪除一些屬性。 我有一系列要刪除的屬性:

const colToHide = ['name', 'age']; 
// those properties are selected by the user 

我想從一組對象中刪除屬性'name''age' (或任何用戶選擇的屬性)。 對象數組是這樣的:

const person = [
  {name:'sam', age:'24', address:'xyz avenue', employed:true},
  {name:'john', age:'25', address:'xyz avenue', employed:true}
];

什么是更新對象數組的正確方法?

您可以將.omit()方法與.map()結合使用。 像這樣:

 const person = [ {name:'sam', age:'24', address:'xyz avenue', employed:true}, {name:'john', age:'25', address:'xyz avenue', employed:true} ] const omitKeys = (keys, arr) => R.map(R.omit(keys), arr); console.log(omitKeys(["name", "age"], person)); 
 .as-console {background-color:black !important; color:lime;} .as-console-wrapper {max-height:100% !important; top:0;} 
 <script src="//cdnjs.cloudflare.com/ajax/libs/ramda/0.25.0/ramda.min.js"></script> 

甚至,您可以將.compose()用作對評論進行建議的@ScottSauyet來執行:

const omitKeys = R.compose(R.map, R.omit);

然后將其用作:

omitKeys(["name", "age"])(person);

 const person = [ {name:'sam', age:'24', address:'xyz avenue', employed:true}, {name:'john', age:'25', address:'xyz avenue', employed:true} ] const omitKeys = R.compose(R.map, R.omit); console.log(omitKeys(["name", "age"])(person)); 
 .as-console {background-color:black !important; color:lime;} .as-console-wrapper {max-height:100% !important; top:0;} 
 <script src="//cdnjs.cloudflare.com/ajax/libs/ramda/0.25.0/ramda.min.js"></script> 

或使用R.useWith無點樣式:

 const omit = R.useWith(R.map, [ R.omit, R.identity, ]); const persons = [ {name:'sam', age:'24', address:'xyz avenue', employed:true}, {name:'john', age:'25', address:'xyz avenue', employed:true} ] console.log( 'result', omit(["name", "age"], persons), ); 
 <script src="//cdnjs.cloudflare.com/ajax/libs/ramda/0.25.0/ramda.min.js"></script> 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM