簡體   English   中英

如何過濾對象javascript中的數組值?

[英]How to filter array value in object javascript?

我有包含數組的對象,我想根據數組值過濾對象。

例如:

    {
       "sun":["sleep","walk"],
       "mon":["read","dance","ride"],
       "tue":["work","dance","sleep"],
    }

如果我輸入關鍵字“sleep”,那么結果應該如下

    {
      "sun":["sleep"],
      "tue":["sleep"],
    }

任何建議都會有所幫助

解決這個問題的有用工具:

 let obj = { "sun": ["sleep", "walk"], "mon": ["read", "dance", "ride"], "tue": ["work", "dance", "sleep"], }; let result = Object.fromEntries( Object.entries(obj) .filter(kvp => kvp[1].includes('sleep')) .map(([k, v]) => [k, v.filter(o => o === 'sleep')]) ) console.log(result)

只需遍歷對象並進行操作,請在下面找到工作代碼:

 const obj = { "sun": ["sleep", 'walk'], "mon": ["read", "dance", "ride"], "tue": ["work", "dance", "sleep"], } function filterIt(filterString) { const result = {}; for (const prop in obj) { if (obj[prop].includes(filterString)) { result[prop] = [filterString]; } } return result; } const finalResult = filterIt('sleep'); console.log(finalResult);

使用Object.keysmapincludes

let obj ={
       "sun":["sleep","walk"],
       "mon":["read","dance","ride"],
       "tue":["work","dance","sleep"],
    }

let new_obj = {}
let search = 'sleep'

Object.keys(obj).map(key => {
     obj[key].includes(search) ? new_obj[key]=[search] : ''
})

console.log(new_obj)

您可以使用_.transform()創建一個新對象。 檢查值數組 ( v ) 是否包含str ,以及它是否使用包含 str 的新數組分配鍵:

 const fn = (obj, str) => _.transform(obj, (o, v, k) => { if(v.includes(str)) o[k] = [str] }) const obj = { "sun":["sleep","walk"], "mon":["read","dance","ride"], "tue":["work","dance","sleep"], } const result = fn(obj, 'sleep') console.log(result)
 <script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.20/lodash.min.js" integrity="sha512-90vH1Z83AJY9DmlWa8WkjkV79yfS2n2Oxhsi2dZbIv0nC4E6m5AbH8Nh156kkM7JePmqD6tcZsfad1ueoaovww==" crossorigin="anonymous"></script>

暫無
暫無

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

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