我想使用JavaScript中的innerstate鍵值過濾與鍵值不匹配的diaryItems的資料并將其放入答案常量中。
我使用了這樣的代碼,但沒有得到想要的值。如何修復代碼?
這是我的代碼
const innerstate = {
instar: 'egg',
feedType: 'feed',
feedAmount: 0,
inputfeedtime: 0,
wormSize: 'third',
inputamount: 0,
}
const diaryItems =
[
{diaryItemId: 174, name: "instar"},
{diaryItemId: 175, name: "recordFeedPeriod"},
{diaryItemId: 176, name: "feedPeriod"},
{diaryItemId: 177, name: "feedAmount"},
{diaryItemId: 178, name: "feedType"},
{diaryItemId: 195, name: "totalFeedAmount"},
{diaryItemId: 196, name: "inputfeedtime"},
{diaryItemId: 197, name: "wormSize"},
{diaryItemId: 198, name: "inputamount"}
]
(expected answer)
const answer = [
{diaryItemId: 174, name: "instar"},
{diaryItemId: 178, name: "feedType"},
{diaryItemId: 177, name: "feedAmount"},
{diaryItemId: 196, name: "inputfeedtime"},
{diaryItemId: 197, name: "wormSize"},
{diaryItemId: 198, name: "inputamount"}
]
我試過這段代碼,但它不起作用
const answer = diaryItems.filter((v) => v.name !==
Object.keys(innerState))
uj5u.com熱心網友回復:
你很親密。您需要檢查鍵是否包含當前條目的名稱,而不是檢查所有鍵是否相等:
const innerstate = {
instar: 'egg',
feedType: 'feed',
feedAmount: 0,
inputfeedtime: 0,
wormSize: 'third',
inputamount: 0,
};
const diaryItems = [
{diaryItemId: 174, name: "instar"},
{diaryItemId: 175, name: "recordFeedPeriod"},
{diaryItemId: 176, name: "feedPeriod"},
{diaryItemId: 177, name: "feedAmount"},
{diaryItemId: 178, name: "feedType"},
{diaryItemId: 195, name: "totalFeedAmount"},
{diaryItemId: 196, name: "inputfeedtime"},
{diaryItemId: 197, name: "wormSize"},
{diaryItemId: 198, name: "inputamount"}
];
const keys = Object.keys(innerstate);
const result = diaryItems.filter(({name}) => keys.includes(name));
console.log(result);
uj5u.com熱心網友回復:
您只需要檢查名稱是否在鍵陣列中
const answer = diaryItems.filter((v) =>
Object.keys(innerstate).includes(v.name)
)
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/492377.html
標籤:javascript 节点.js
