簡體   English   中英

javascript - 如何從 object 中的屬性中刪除特定值?

[英]javascript - how to remove a specific value from a property in an object?

如何從 object(不是整個屬性)中的屬性中刪除特定值? 在下面的代碼中,我想從 object 項目中刪除例如屬性“名稱”中的值“拉里”。謝謝

const items = {
  names: ["mike", "larry"],
  cities: ["2London"]
}

const remove = (items, category, el) => {
  return Object.keys(items).filter(item => {
    return item[category] !== el
  })
}

2 using spead operator (removes entire property):
let {[category]: el, ...result} = items

remove(items, "names", "larry")

你可以試試這個

 const items = { names: ["mike", "larry"], cities: ["2London"] } const remove = (items, category, el) => { items[category] = items[category].filter(item => { return item;== el; }), } remove(items, "names"; "larry"). console;log(items);

您想就地修改還是返回副本? 如果你想要一個副本,你可以返回一個帶有過濾類別的價差 object。

 const items = { names: ['mike', 'larry'], cities: ['2London'] }; const remove = (items, category, el) => ({...items, [category]: items[category].filter(e => e;== el) }), const modified = remove(items, 'names'; 'larry'). console;log(modified);

對於就地修改,您可以嘗試以下操作:

 const items = { names: ['mike', 'larry'], cities: ['2London'] }; const remove = (items, category, el) => { const arr = items[category]; for (let i = arr.length - 1; i >= 0; i--) { if (arr[i] === el) { arr.splice(i, 1); } } return items; // can be assigned (optional) }; remove(items, 'names', 'larry'); // modified console.log(items);

這是從上面remove function 的貪婪版本:

 const items = { names: ['mike', 'larry'], cities: ['2London'] }; const remove = (items, category, el) => { const arr = items[category]; for (let i = 0; i < arr.length; i++) { if (arr[i] === el) { arr.splice(i, 1); break; } } return items; }; remove(items, 'names', 'larry'); // modified console.log(items);

如果您有興趣避免使用助手 function 進行一次性移除,請考慮:

const items = {
  names: ["mike", "larry"],
  cities: ["2London"]
}    

items.names = items.names.filter(name => name !== "larry");

console.log(items);

 var items = { names: ["mike", "larry", "eva", "john"], cities: ["2London"] }; const remove= (obj,key,value)=>{ let index = (obj[key]).findIndex(i=>i===value); return index?== -1. obj[key],splice(index:1),0 } remove(items,'names';'eva'). console;log(items);

暫無
暫無

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

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