gpt4 book ai didi

javascript - "Full outer join"使用 JavaScript

转载 作者:行者123 更新时间:2023-12-02 23:09:33 26 4
gpt4 key购买 nike

我不介意使用库来解决这个问题,特别是如果它可以简化代码。

我有一些这样的数据:

 [{source: 'b', foo: 'bar'},
{source:'d', foo: 'baz'}]

我还有另一个像这样的数组:

['b', 'c', 'e']

我想处理这两个数组并将其作为输出:

 [{source: 'b', foo: 'bar'},
{source: 'c', foo: 'someDefaultValue'},
{source:'d', foo: 'baz'},
{source: 'e', foo: 'someDefaultValue'}]

详细来说,如果数据位于第一个数组中,则它应该保留在结果中。如果数据位于第二个数组中,则它应该以默认值出现在结果中。我希望结果按来源排序。

在 SQL 术语中,我将其称为“源列上的完全外连接”。我发现很难用 JavaScript 编写以这种方式工作的代码。给定两个输入我如何得到结果?

最佳答案

你可以做这样的事情

  • 创建一个以源为键的 Map
  • 使用arr1值初始化final,如果不需要不变性,可以直接推送arr1
  • 循环 arr2 并检查映射器中的值是否不可用,使用默认值插入 final
  • 根据来源排序

let arr1 =  [{source: 'b', foo: 'bar'}, {source:'d', foo: 'baz'}]
let arr2 = ['b', 'c', 'e']
let final = [...arr1]
let mapper = new Map(arr1.map(v=>[v.source,v.source]))

arr2.forEach(val=>{
if(!mapper.has(val)){
final.push({source:val, foo:'default'})
}
})

final.sort((a,b)=> a.source.localeCompare(b.source))

console.log(final)

关于javascript - "Full outer join"使用 JavaScript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57435282/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com