第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

查找 JS 對(duì)象中的重復(fù)或虛假值 - Javascript

查找 JS 對(duì)象中的重復(fù)或虛假值 - Javascript

收到一只叮咚 2023-12-14 14:29:06
我有一個(gè)對(duì)象,它可以包含重復(fù)和/或虛假值。我想基于該對(duì)象組成一個(gè)對(duì)象數(shù)組,并根據(jù)對(duì)不區(qū)分大小寫(xiě)的值的檢查添加一個(gè)新的布爾屬性。這就是我所擁有的:const obj = {  a: 'A',  b: 'B',  c: 'C',  d: 'c',  e: 'E',  f: ''}console.log(Object.keys(obj).map(i => {  return {    key: i,    isDuplicateOrFalsy: _.filter(        Object.values(obj),        j =>        _.trimEnd(_.toLower(j)) ===        _.trimEnd(          _.toLower(            obj[i]          )        )      ).length > 1 ||      !_.every(        Object.values(obj),        Boolean      )  }}))<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.20/lodash.min.js"></script>預(yù)期輸出:[{  isDuplicateOrFalsy: false,  key: "a"}, {  isDuplicateOrFalsy: false,  key: "b"}, {  isDuplicateOrFalsy: true,  key: "c"}, {  isDuplicateOrFalsy: true,  key: "d"}, {  isDuplicateOrFalsy: false,  key: "e"}, {  isDuplicateOrFalsy: true,  key: "f"}]請(qǐng)指教。
查看完整描述

5 回答

?
手掌心

TA貢獻(xiàn)1942條經(jīng)驗(yàn) 獲得超3個(gè)贊

將對(duì)象轉(zhuǎn)換為[key, value]with的條目_.toPairs(),并按值的小寫(xiě)版本對(duì)它們進(jìn)行分組。平面映射組,并將組中的每個(gè)條目映射回一個(gè)對(duì)象。組內(nèi)長(zhǎng)度大于 1 的任何項(xiàng)目都是重復(fù)項(xiàng)。合并對(duì)象,并使用以下命令以正確的順序獲取項(xiàng)目_.at():


const fn = obj => _.at(

  _.merge(..._.flatMap(

    _.groupBy(_.toPairs(obj), ([, v]) => _.lowerCase(v)),

    group => group.map(([key, v]) => ( { [key]:{

      key,

      isDuplicateOrFalsy: group.length > 1 || _.isEmpty(_.trim(v))

    }}))

  )),

  _.keys(obj) 

)



const obj = {"a":"A","b":"B","c":"C","d":"C","e":"E","f":"","g":"c"}


const result = fn(obj)


console.log(result)

<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.20/lodash.min.js"></script>


查看完整回答
反對(duì) 回復(fù) 2023-12-14
?
隔江千里

TA貢獻(xiàn)1906條經(jīng)驗(yàn) 獲得超10個(gè)贊

你可以做類(lèi)似的事情:


const obj = { a: 'A', b: 'B', c: 'C', d: 'C', e: 'E', f: '' };


const res = Object.entries(obj)

            .map(([key, val], i, arr) => ({

                key,

                isDuplicateOrFalsy: !val ||

                  arr.some(([k, v], j) =>

                    j !== i && v.toLowerCase().trim() === val.toLowerCase().trim()

                  )

            }));

                  

console.log(res);


查看完整回答
反對(duì) 回復(fù) 2023-12-14
?
嗶嗶one

TA貢獻(xiàn)1854條經(jīng)驗(yàn) 獲得超8個(gè)贊

解決方案不包含不必要的循環(huán):


const obj = {

  a: 'A',

  b: 'B',

  c: 'C',

  d: 'C',

  e: 'E',

  f: ''

}

// make array [ [key, value], ...  ] and sort by values 

values = Object.entries(obj).sort((a,b)  => a[1] > b[1])

result = values.map((e,i, arr) => {

  const [key, value] = e;

  const last = values.length -1; // last index

  let isDuplicateOrFalsy = false;

  

  // true conditions = dublicates are near

  if (!value) isDuplicateOrFalsy = true; // falsy check

  else if (i > 0 && i < last  // for middle

      && (arr[i-1][1] === value || arr[i+1][1] === value))  isDuplicateOrFalsy = true;   

  else if (i === 0 && arr[1][1] === value) isDuplicateOrFalsy = true; // for first

  else if (i === last && arr[last-1][1] === value) isDuplicateOrFalsy = true;   // for last



  return {

    key,

    isDuplicateOrFalsy

  }

})


console.log(result)


查看完整回答
反對(duì) 回復(fù) 2023-12-14
?
森欄

TA貢獻(xiàn)1810條經(jīng)驗(yàn) 獲得超5個(gè)贊

const obj = {

  a: 'A',

  b: 'B',

  c: 'C',

  d: 'c',

  e: 'E',

  f: ''

};


const isDuplicateOrFalsyByValue = Object

  .values(obj)

  .reduce(

    (result, value) => {

      const caseInsensetiveValue = value.toLowerCase();

      result[caseInsensetiveValue] = result[caseInsensetiveValue] === undefined

        /*

          * If `caseInsensetiveValue` is a falsy value,

            then set `isDuplicateOrFalsy` to `true`

          * Otherwise set it to `false`

        */

        ? !caseInsensetiveValue

        /*

          * If result[caseInsensetiveValue] is `true` (we had a falsy value),

            then this `true` won't hurt

          * Otherwise we have a duplicate at this point

            and should set it to `true` as well.

        */

        : true;


      return result;

    },

    {},

  );


const keysWithDuplicationOrFalsyInfo = Object

  .entries(obj)

  .reduce(

    (result, [key, value]) => [

      ...result,

      {

        isDuplicateOrFalsy: isDuplicateOrFalsyByValue[value.toLowerCase()],

        key,

      },

    ],

    [],

  );

console.log('keysWithDuplicationOrFalsyInfo');

console.log(keysWithDuplicationOrFalsyInfo);


查看完整回答
反對(duì) 回復(fù) 2023-12-14
?
瀟瀟雨雨

TA貢獻(xiàn)1833條經(jīng)驗(yàn) 獲得超4個(gè)贊

簡(jiǎn)短且更易讀。


const obj = {

  a: 'A',

  b: 'B',

  c: 'C',

  d: 'c',

  e: 'E',

  f: ''

}


// Object map number of occurance of each value. { a: 1, b: 1, c: 2, d: 1 }

const valuesOccurance = _.mapValues(_.groupBy(obj, _.lowerCase), occurances => occurances.length);


// function to check duplicate

const isDuplicate = value => valuesOccurance[_.lowerCase(value)] > 1;


// function to check falsy value

const isFalsy = value => !value;


const result = _.map(obj, (value, key) => {

  return {

    isDuplicateOrFalsy: isFalsy(value) || isDuplicate(value),

    key,

  };

});

console.log({ result })

<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.20/lodash.min.js"></script>


查看完整回答
反對(duì) 回復(fù) 2023-12-14
  • 5 回答
  • 0 關(guān)注
  • 210 瀏覽
慕課專(zhuān)欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢(xún)優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)