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
键太过痴迷,以至于我忘了我可以这么做。想发布你的答案吗?