אנגולר - מצא פריטים במערך על פי תנאי במערך פנימי


איך למצוא מזהה במערך שנמצא בתוך מערך של אובייקטים

דוגמה :

let arrayobjects = [{ 
    id: 1, 
    name: "oinoin", 
    description: ["one", "two", "three"]
}, { 
    id: 2, 
    name: "zatata", 
    description: ["four", "five", "six"]
}];

איך אני יכול למצוא את המזהה של המילה "שניים" ?

תשובה #1

אם אתה צריך יותר מפריט אחד, אתה יכול לסנן את המערך בעזרת Array#filter, לבדוק אם התכונה description עבור כל פריט מכילה את המילה two בעזרת Array#includes (ES7), ואז למפות את התוצאה כדי לקבל רק את ה-id של אותם פריטים באמצעות Array#map.

let arrayobjects = [
      { id: 1, name: "oinoin", description: ["one", "two", "three"] }, 
      { id: 2, name: "zatata", description: ["four", "five", "six"] }
];

const ids = arrayobjects.filter(item => item.description.includes('two'))
                        .map(item => item.id);
                        
console.log(ids);

אם יש לך פריט אחד בלבד, אתה יכול פשוט להשתמש ב-Array#find ולבצע את אותו הבדיקות

let arrayobjects = [
      { id: 1, name: "oinoin", description: ["one", "two", "three"] }, 
      { id: 2, name: "zatata", description: ["four", "five", "six"] }
];

const item = arrayobjects.find(item => item.description.includes('two'));
                        
console.log(item.id);

תשובה #2

קטע זה עשוי להיות מה שאתה מחפש

arrayobjects.filter( ele => ele.description.includes("two")).map(ele => ele.id)

פלט :[1]