2017-11-17 20 views
0

我有對象的數組和名稱的另一個數組類似如下:如何在與其他數組匹配後刪除未使用的對象?

數組對象作爲文件的info對象

[ 
    { fieldname: 'banner', path: 'banner_img_path' }, 
    { fieldname: 'logo' , path: 'logo_img_path' }, 
    { fieldname: 'random', path: 'random_img_path' } 
] 

這裏是我的名字的數組

['banner', 'logo'] 

那麼我如何匹配或映射這兩個變量!請注意,映射或匹配後,所有未使用的對象應從原始對象數組中刪除?我需要得到這樣的對象

{ 
    banner: banner_img_path, 
    logo : logo_img_path 
} 

我能夠做匹配,但我堅持擦除那些沒有使用的對象。

注意:可能是這個問題重複,但只是因爲我不知道這個操作的名稱是什麼! 請原諒我。

+0

它是確定建立該對象,然後重建原始的對象數組? – Andrew

+0

不知道爲什麼你需要清除任何東西。它看起來像你想創建一個新的對象 – charlietfl

+0

@charlietfl這聽起來像一個措辭不佳的雙重問題。 1.構建對象,然後2.刪除原始數組中未出現在對象中的元素。 – Andrew

回答

0

有通過使用功能性的原生JavaScript功能的簡單的解決方案。

const obj = [ 
 
    { fieldname: 'banner', path: 'banner_img_path' }, 
 
    { fieldname: 'logo', path: 'logo_img_path' }, 
 
    { fieldname: 'random', path: 'random_img_path' }, 
 
    { fieldname: 'other', path: 'random_img_path' } 
 
]; 
 

 
const names = ['banner', 'logo']; 
 

 
obj.map((o, i) => { 
 
\t let match = false; 
 
    names.some((item) => { 
 
    \t if (item === o.fieldname) { 
 
    \t match = true; 
 
    \t return true; 
 
    } 
 
    }); 
 
    if (!match) { 
 
    \t delete obj[i]; 
 
    } 
 
}); 
 
\t 
 

 
for (let o in obj) { 
 
\t document.querySelector('p').innerHTML += obj[o].fieldname + '<br>'; 
 
}
<p></p>

+0

感謝您的代碼似乎更適合瀏覽器。我感謝你們。 –

+0

不客氣! –

0

我將要保留的名稱添加到查找集中。然後,如果fieldname與名稱集合中的任何內容匹配,則使用forEach並檢查每個對象的內部。如果有匹配,我將它添加到我的newObj

const namesToKeep = ['banner', 'logo'] 
 
const fileInfo = [ 
 
    { fieldname: 'banner', path: 'banner_img_path' }, 
 
    { fieldname: 'logo' , path: 'logo_img_path' }, 
 
    { fieldname: 'random', path: 'random_img_path' } 
 
] 
 

 
const names = new Set(namesToKeep) 
 
const newObj = {} 
 

 
fileInfo.forEach(obj => { 
 
    if (names.has(obj.fieldname)) { 
 
    newObj[obj.fieldname] = obj.path 
 
    } 
 
}) 
 
console.log(newObj)

+0

我想'fileInfo'確定要保留哪些名字。 – JohanP

+0

@JohanP哎呀,數據結構錯了。我會解決它。 – Andrew

+0

如果namesToKeep有一個名爲tester的元素,那麼測試者應該拼接出來,因爲它不是fileInfo的一部分 – JohanP

相關問題