我试图在node.js中构建一个同步两个不同系统的API,而且我无法分解从源系统收到的一系列对象。 基本上,我收到一个看起来有点像这样的数组:
sourcedata = {
"items": [
{ "id": "item1",
"some fields": {...array of some fields },
"more fields": {another block of fields}
},
{ "id": "item2",
"some fields": {...array of some fields },
"more fields": {another block of fields}
}]
}
我还有三个ID数组 - 新的ID(意味着我必须将它们发送到目标系统),旧的ID(从目标中删除),以及两者都出现的ID - 我需要检查的一个特殊的标签,看看它们是否不同。
e.g。
newitems = [id1,id2,id3]
existingItems [id4,id5,id6]
deletedItems = [id7,id8]
我尝试做的是创建只包含NEW和EXISTING项数据的新数组,这样我就可以处理并将它们发送到目标系统,而无需扫描每个键的sourcedata数组。决定做什么。当我比较简单数组时,我知道如何做到这一点,但在这里我需要复制整个对象及其所有字段,我不能这样做 找到合适的方法。任何帮助将不胜感激。
答案 0 :(得分:0)
您可以使用filter
功能。它根据您的条件过滤掉数组元素。您可以将它与includes
函数一起使用来确定某个东西是否在数组中。例如:
sourceArray = [
{
id: 'a'
},
{
id: 'b'
},
{
id: 'c'
},
{
id: 'd'
}
]
var toDelete = ['c', 'b']
sourceArray = sourceArray.filter(x => !toDelete.includes(x.id))
// some items in sourceArray have now been removed.
请注意,filter
和includes
可能需要最新版本的nodejs。