Javascript 如果我使用lodash';如果要基于一组布尔设置合并对象,如何优雅地编写它?

Javascript 如果我使用lodash';如果要基于一组布尔设置合并对象,如何优雅地编写它?,javascript,object,lodash,Javascript,Object,Lodash,我遇到了一个以前从未遇到过的编程问题。我正在根据用户定义的设置合并对象数据。有人知道如何在没有一堆嵌套的if/else语句的情况下编程吗\u union接受一个数组 import _ from 'lodash'; // Real data structure is more complex, but is an array that contains objects like so let dataset1 = [{ "name": "John" }, { "name": "Paul" }];

我遇到了一个以前从未遇到过的编程问题。我正在根据用户定义的设置合并对象数据。有人知道如何在没有一堆嵌套的if/else语句的情况下编程吗
\u union
接受一个数组

import _ from 'lodash';

// Real data structure is more complex, but is an array that contains objects like so
let dataset1 = [{ "name": "John" }, { "name": "Paul" }];
let dataset2 = [{ "name": "Laura" }, { "name": "Eline" }];
let dataset3 = [{ "name": "Boris" }, { "name": "Tanya" }];

// These are use configurable settings, real dataset is user defined
let dataSetActive1 = true;
let dataSetActive2 = true;
let dataSetActive3 = false;

// this is the dataset I need in this case of true, true, false - but how to  
// write this elegantly when the truth/false changes?
let dataset = _.union(dataset1, dataset2); 


我最喜欢的方法是:

让数据集1=[{
“姓名”:“约翰”
}, {
“姓名”:“保罗”
}];
让数据集2=[{
“姓名”:“劳拉”
}, {
“姓名”:“Eline”
}];
让数据集3=[{
“姓名”:“鲍里斯”
}, {
“姓名”:“Tanya”
}];
让dataSetActive1=true;
让dataSetActive2=true;
设dataSetActive3=false;
让数据集=u2;.union(
数据集1和数据集1,
数据集2和数据集2,
数据集3和数据集3
)
.过滤器(布尔值);
console.log(数据集)

使用三元组为每个
活动的
变量/const返回一个空数组,该数组为
false

由于数组中的项是使用该算法的对象
。.union()。因为如果对象A和对象B不是同一个对象,它们就不相等。使用
\uuu.unionBy()
名称
作为迭代者作为唯一性标准

constdataset1=[{“name”:“John”},{“name”:“Paul”}];
const dataset2=[{“name”:“Laura”},{“name”:“Eline”}];
const dataset3=[{“name”:“Boris”},{“name”:“Tanya”}];
const dataSetActive1=true;
const dataSetActive2=真;
const dataSetActive3=false;
常量结果=uu.unionBy(
数据集1?数据集1:[],
数据集2?数据集2:[],
数据集3?数据集3:[],
“姓名”
);
console.log(结果)

最简单的方法是创建中间数组,如
d1=dataSetActive1?数据集1:[]
并使用它们。是否允许更改数据集的结构?e、 g.你能让每个数据集成为一个具有
数据
活动属性的对象吗?别忘了
union
不仅仅是concat-@chazsolo-thanx指出它,而是
union
只对原语有效,这就是为什么有
unionBy
。但是使用
concat
的解决方案绝对不是一回事。@DaveNewton,为什么?@felixmosh。。。因为并集和连接是不同的?