[英]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.keys
、 map
、 includes
。
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.