簡體   English   中英

如何從與參數不匹配的對象中刪除值

[英]How to remove values from an object that don't match parameters

我對編程很陌生,並且有點困惑:我有一個數組對象,它的值是數組。

this和 filter() 的幫助下,我能夠在我的 HTML 模板內的兩個 for 循環中打印所需的內容,但我正在尋找一種方法來創建一個對象或一個數組,該對象或數組已以某種方式修剪了“不需要的”汽車,因為我正在嘗試使用 res.render() 將數據發送到 HTML 模板,並且似乎無法在 for 循環內部或外部執行此操作(程序嘗試在 for 循環的每次迭代中進行渲染並導致錯誤,或者 for 循環中的值似乎超出范圍?)

所以我將 people 變量發送到模板,然后在客戶端上執行 for 循環,但我更喜歡在發送到模板之前執行邏輯,以免在“scriplet”標簽中使用 JavaScript 弄亂模板

 var myObj = [ { "name": "Robert", "age": 40, "cars": [{ "make": "Toyota", "model": "Yaris", "year": 2010, "bought": "2012-11-1", "type": "lease" }, { "make": "Peugeot", "model": "206", "year": 2005, "bought": "2017-05-11", "type": "lease" }, { "make": "Volvo", "model": "V70", "year": 2019, "bought": "2020-07-02", "type": "owned" } ] }, { "name": "John", "age": 40, "cars": [{ "make": "Toyota", "model": "Corolla", "year": 2011, "bought": "2013-11-1", "type": "owned" }, { "make": "Renault", "model": "Megane", "year": 2006, "bought": "2007-05-11", "type": "owned" }, { "make": "Ford", "model": "Mondeo", "year": 2019, "bought": "2020-07-02", "type": "lease" } ] }, ] let persons = myObj.filter((person) => { return person.cars.some((car) => { return car.type == "lease" }) }) for (i = 0; i < persons.length; i++) { for (y = 0; y < persons[i].cars.length; y++) { if (persons[i].cars[y].type === "lease") { console.log(persons[i].name) console.log(persons[i].cars[y].make) } } }

對不起,如果類似的問題已經被問了一百萬次,但我找不到與我的問題足夠相似的東西,並且無法解決這個問題。

根據您所指示的輸出,下面的方法將為您提供一組帶有人名和租賃汽車品牌的對象:

 const personsCars = persons.map((person) => { const res = person.cars .filter((car) => car.type === 'lease') .map((car) => { return {name: person.name, make: car.make } }); return res; }).flat(); // Print array personsCars.forEach((pc) => { console.log(pc.name, pc.make); });

暫無
暫無

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

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