如果嵌套陣列中不存在,我正在嘗試插入新資料,到目前為止,如果它們不存在,我可以添加,但它正在洗掉以前的資料,任何幫助將不勝感激。
陣列
const posts =
[ { _id: 1
, message: 'this is post one'
, likes: [ { id: 111221, user: 'random 1' } , { id: 2223422, user:'random 2' } ]
, comments: [ { id: 332233, message: 'random comment' } , { id: 2344444, message:'another random comment' } ]
}]
const comments =
[ { id: 3333, message: 'this is comment 1' }
, { id: 4444, message: 'this is comment 2' }
]
const likes =
[ { id: 1111, user: 'Peter' }
, { id: 2222, user: 'John' }
]
預期產出
const newPost =
[ { _id: 1
, message: 'this is post one'
, likes: [
{ id: 1111, user: 'Peter' } ,
{ id: 111221, user: 'random 1' } ,
{ id: 2223422, user:'random 2' } ,
{ id: 2222, user: 'John' }
]
, comments: [
{ id: 3333, message: 'this is comment 1' } ,
{ id: 4444, message: 'this is comment 2' },
{ id: 332233, message: 'random comment' } ,
{ id: 2344444, message:'another random comment' }
]
}]
我試過的
const newPosts = posts.map(post => ({
...post,
likes: likes.filter(like => !post.likes.map(like => like.id).includes(like.id)),
comments: comments.filter(comment => !post.comments.map(comment => comment.id).includes(comment.id)),
}))
console.log(newPosts)
uj5u.com熱心網友回復:
也許我太累了,但我只是將陣列合并在一起。你的帖子沒有提到你需要檢查變數中的評論是否comments已經存在于 posts[0].comments ( _id: 1) 中。
const posts = [{
_id: 1,
message: 'this is post one',
likes: [{
id: 111221,
user: 'random 1'
}, {
id: 2223422,
user: 'random 2'
}],
comments: [{
id: 332233,
message: 'random comment'
}, {
id: 2344444,
message: 'another random comment'
}]
}]
const comments = [{
id: 3333,
message: 'this is comment 1'
}, {
id: 4444,
message: 'this is comment 2'
}]
const likes = [{
id: 1111,
user: 'Peter'
}, {
id: 2222,
user: 'John'
}]
const addTo = (posts, comments, likes) => {
let newPostInstance = [...posts][0];
newPostInstance.comments = [...newPostInstance.comments, ...comments];
newPostInstance.likes = [...newPostInstance.likes, ...likes];
return newPostInstance;
}
const newPost = addTo(posts, comments, likes);
console.log(newPost)
uj5u.com熱心網友回復:
const posts1 =
[ { _id: 1
, message: 'this is post one'
, likes: [ { id: 111222221, user: 'random 1' } , { id: 2223422, user:'random 2' } ]
, comments: [ { id: 3322222233, message: 'random comment' } , { id: 2344444, message:'another random comment' } ]
}]
const posts =
[ { _id: 1
, message: 'this is post one'
, likes: [ { id: 111221, user: 'random 1asdasdasd' } , { id: 2223422, user:'random 2asdasdasd' } ]
, comments: [ { id: 332233, message: 'rasdasdasd' } , { id: 2344444, message:'asdasdasdwwwwww' } ]
}]
if(posts.filter(r => r.comments) !== posts1.filter(r => r.comments)){
const a = posts.map(({likes,_id,message, ...o}) => ({...o.comments}))
const b = posts1.map(({likes,_id,message, ...o}) => ({...o.comments}))
const c = posts.map(({comments,_id,message, ...o}) => ({...o.likes}))
const d = posts1.map(({comments,_id,message, ...o}) => ({...o.likes}))
const newComments = [...a,...b]
const newLikes = [...c,...d]
const returnFlattenObject = (arr) => {
const flatObject = {};
for(let i=0; i<arr.length; i ){
for(const property in arr[i]){
flatObject[`${property}_${i}`] = arr[i][property];
}
};
return flatObject;
}
posts.map(({comments,likes, ...o}) => ({
...o,
comments: returnFlattenObject(newComments),
likes: returnFlattenObject(newLikes)
}))
} else {
console.log('exists')
}
結果
[{…}]
0:
comments:
0_0: {id: 332233, message: 'rasdasdasd'}
0_1: {id: 3322222233, message: 'random comment'}
1_0: {id: 2344444, message: 'asdasdasdwwwwww'}
1_1: {id: 2344444, message: 'another random comment'}
[[Prototype]]: Object
likes:
0_0: {id: 111221, user: 'random 1'}
0_1: {id: 111222221, user: 'random 1'}
1_0: {id: 2223422, user: 'random 2'}
1_1: {id: 2223422, user: 'random 2'}
[[Prototype]]: Object
message: "this is post one"
_id: 1
[[Prototype]]: Object
length: 1
[[Prototype]]: Array(0)
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/351235.html
標籤:javascript
下一篇:凍結Highchart影片
