Javascript 如何从对象中删除$$hashKey?
嗨,我有一个对象数组。这些对象以某种方式获得一个Javascript 如何从对象中删除$$hashKey?,javascript,object,functional-programming,ramda.js,Javascript,Object,Functional Programming,Ramda.js,嗨,我有一个对象数组。这些对象以某种方式获得一个$$hashKey。我需要删除$$hashKey,以便我的drop复制或删除uniques逻辑 let tickers = [ { $$hasKey: "object:280", ticker: 'goog' }, { $$hasKey: "object:308", ticker: 'goog' }, { $$hasKey: "object:327", ticker: 'goog
$$hashKey
。我需要删除$$hashKey
,以便我的drop复制或删除uniques逻辑
let tickers = [
{
$$hasKey: "object:280",
ticker: 'goog'
},
{
$$hasKey: "object:308",
ticker: 'goog'
},
{
$$hasKey: "object:327",
ticker: 'goog'
}
]
R.uniq(tickers); //-> Returns all instead of 1
R.dropRepeats(tickers); //-> Returns all instead of 1
我尝试了这个,但是我的tickers数组最终有3个未定义的值
const removeRepeats = tickers => {
console.log('removeRepeats', tickers);
tickers = _.map(tickers, ticker => {
delete ticker['$$hasKey'];
});
return R.dropRepeats(tickers);
};
我会尝试:
const removeRepeats = tickers => {
console.log('removeRepeats', tickers);
tickers = _.map(tickers, ticker => { return {ticker: ticker["ticker"]}; });
return R.dropRepeats(tickers);
};
我不知道你为什么需要洛达斯和拉姆达在一起。任何一种洛达斯或拉姆达单凭一个班轮就足够了 洛达斯:
_.uniqWith(_.map(tickers, (ticker) => _.pick(ticker, ['ticker'])), _.isEqual)
_.uniqWith(_.map(tickers, (ticker) => _.pickBy(ticker, (val, key) => !_.startsWith(key, '$$'))), _.isEqual)
拉姆达:
R.uniq(R.map(R.pick(['ticker']))(tickers))
R.uniq(R.map(R.pickBy((v, k) => !k.startsWith('$$')))(tickers))
或者,如果要在没有以$$
开头的所有属性的情况下进行比较(角度内部属性)
洛达斯:
_.uniqWith(_.map(tickers, (ticker) => _.pick(ticker, ['ticker'])), _.isEqual)
_.uniqWith(_.map(tickers, (ticker) => _.pickBy(ticker, (val, key) => !_.startsWith(key, '$$'))), _.isEqual)
拉姆达:
R.uniq(R.map(R.pick(['ticker']))(tickers))
R.uniq(R.map(R.pickBy((v, k) => !k.startsWith('$$')))(tickers))
我想你是真的想要而不是
uniq
提供列表中不同元素的集合dropRepeats
只是删除相同值的连续副本。([1,1,2,3,3,3,2,2,1]=>[1,2,3,2,1]
)
要做到这一点,我将其视为两个步骤,一个是创建没有违规键的版本(Ramda应该有帮助),另一个是将列表减少到uniq元素。我可以这样写:
let myFunc = R.pipe(R.map(R.dissoc('$$hasKey')), R.uniq);
myFunc(tickers);
如果您不想简单地删除单个属性,而是保留一个固定的属性列表,您可以这样做:
R.pipe(R.map(R.pick(['ticker', 'prop2', 'prop3'])), R.uniq)
“ramda”是否有一个map()?是的,如果使用:tickers=..map(tickers,ticker=>{return{ticker:ticker[“ticker”]};})更新RemovePeats会发生什么情况;哈哈,是的,这确实有效!Lol对不起,我看到这里发生了什么。。。我对删除/销毁那些
$$hashKey
键太过痴迷,以至于我忘了我可以这么做。想发布你的答案吗?