我有一個嵌套的物件陣列,dishes其中包含唯一的 ID。如果id存在于foodItems中dishes,我想找到陣列的索引,然后將其從中洗掉foodItems
const dishes = [{
cuisine: 'Chinese',
foodItems: [{
id: '1',
dishName: 'Chicken noodles',
price: '6.00 USD'
},
{
id: '2',
dishName: 'Fried rice',
price: '5.00 USD'
},
{
id: '3',
dishName: 'Dumplings',
price: '2.00 USD'
}
],
},
{
cuisine: 'Indian',
foodItems: [{
id: '4',
dishName: 'Tikka masala',
price: '10.00 USD'
},
{
id: '5',
dishName: 'Naan Bread',
price: '2.00 USD'
},
{
id: '6',
dishName: 'Dal Fry',
price: '4.00 USD'
}
],
}
];
在這里,是我試了一下(這是不作業,回傳undefined的index):
let removeId = (id) => {
let index = dishes.forEach(dish => dish.foodItems.findIndex(item => item.id === id)); // returns undefined
if (index !== -1) {
dishes.forEach(dish=> dish.foodItems.splice(index, 1)); // remove obj from foodItems array
return true;
} else {
return false;
}
}
uj5u.com熱心網友回復:
您需要在forEach()回呼方法中包含其余邏輯。但是,考慮到您希望true在洗掉專案后回傳,使用for ... of回圈更容易:
const dishes = [{
cuisine: 'Chinese',
foodItems: [{
id: '1',
dishName: 'Chicken noodles',
price: '6.00 USD'
},
{
id: '2',
dishName: 'Fried rice',
price: '5.00 USD'
},
{
id: '3',
dishName: 'Dumplings',
price: '2.00 USD'
}
],
},
{
cuisine: 'Indian',
foodItems: [{
id: '4',
dishName: 'Tikka masala',
price: '10.00 USD'
},
{
id: '5',
dishName: 'Naan Bread',
price: '2.00 USD'
},
{
id: '6',
dishName: 'Dal Fry',
price: '4.00 USD'
}
],
}
];
const removeId = (id) => {
for (let dish of dishes) {
const index = dish.foodItems.findIndex(fi => fi.id === id);
if (index > -1) {
dish.foodItems.splice(index, 1);
return true;
}
};
return false;
}
console.log(removeId('1'));
console.log(removeId('4'));
console.log(removeId('7'));
console.log(dishes);
uj5u.com熱心網友回復:
你可以試試這個,使用 for of 并添加條目變數你 for 回圈
const dishes = [
{
cuisine: "Chinese",
foodItems: [
{
id: "1",
dishName: "Chicken noodles",
price: "6.00 USD",
},
{
id: "2",
dishName: "Fried rice",
price: "5.00 USD",
},
{
id: "3",
dishName: "Dumplings",
price: "2.00 USD",
},
],
},
{
cuisine: "Indian",
foodItems: [
{
id: "4",
dishName: "Tikka masala",
price: "10.00 USD",
},
{
id: "5",
dishName: "Naan Bread",
price: "2.00 USD",
},
{
id: "6",
dishName: "Dal Fry",
price: "4.00 USD",
},
],
},
];
for (const [idx, items] of dishes.entries()) {
console.log(items.foodItems)
}
對于此處的檔案:https : //developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for...of
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/315786.html
標籤:javascript 数组 json 目的 javascript对象
下一篇:如何在Java中列印此物件?
