[英]How to Filter an Array of Object and check if Specific key has a value in an Array
[英]How to check if key of object in array has specific value in javascript
是否可以檢查數組中的 object 是否具有以下數據格式的特定日期值?
例如,我有一個這樣的數組
[
{
date: '2020-05-03',
items: [{}...]
},
...
]
-> In the above array, I want to check if any object in the array has '2020-05-03' as the date value.
我想知道一個帶日期的 object 是否是?
我嘗試了以下方法,但這只能確認它有一個“日期”作為鍵,我無法比較值。
const existsDate = _.find(prev, 'date');
如果日期已經存在,我還想將一個項目推送到包含該日期的 object 的項目中。
如果沒有,我需要創建一個新日期 object。
您可以使用Array.prototype.find
並進行字符串比較
var arr = [
{
date: '2020-05-03',
items: [{}...]
},
]
const obj = arr.find(item => item.data === '2020-05-03');
編輯:由於要更新現有數組,因此需要使用帶有 findIndex 的 slice 來更新數組
var arr = [
{
date: '2020-05-03',
items: [{}...]
},
]
const newItem = {};
const index= arr.findIndex(item => item.data === '2020-05-03');
if(index > -1) {
arr = [...arr.slice(0, index), {...arr[index], items: arr[index].items.concat(newItems), ...arr.slice(index + 1)}
} else {
arr.push({data: new Date(), items: [newItem]})
}
您可以使用 Array find() 、 some()來獲取/檢查所需的條件,例如:
const arr = [ { date: '2020-05-03', items: [{}] }, { date: '2020-05-02', items: [{}] } ] function checkAndAdd(date) { const res = arr.find(ob => ob.date === date); // console.log(res); // based on the added comments. // if date is found, push something to the items, list: if (res) { res.items.push('Hello'); } else { arr.push({ date, items: [{}] }) } console.log('finalArray', arr); } checkAndAdd('2020-05-03'); checkAndAdd('2020-05-06');
您可以使用過濾器或查找 function
let arr = [
{data:'2020-05-23'},
{data:'2020-06-23'},
{data:'2020-07-23'}
]
let find = arr.find( (val) => val.data == '2020-06-23')
console.log(find)
我不確定您到底要做什么,但他的代碼遍歷對象數組並檢查日期變量。 它輸出索引 (i)。
let date = "2020-05-03"
const array = [
{ date: "2020-05-01" },
{ date: "2020-05-02" },
{ date: "2020-05-03", },
]
for(let i = 0 ; i < array.length ; i ++) {
if(array[i].date === date) {
console.log(i); }
else {
console.log("Date not in array");
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.