Javascript 从对象值创建列表

Javascript 从对象值创建列表,javascript,arrays,object,Javascript,Arrays,Object,我需要从许多对象(在本例中我将使用3)创建一个列表(键),如下所示: 结果是:年,A,B,C,D。我需要的是保留值Year,并合并其余值。我怎么做 编辑: 我已经这样做了 json = [ {Year: "2016", A: "2.015", B: "1.959"}, {Year: "2017", A: "1.200", C: "2.247"}, {Year: "2018", A: "1.301", C: "2.056", D: "1"} ]; keys= Object.

我需要从许多对象(在本例中我将使用3)创建一个列表(键),如下所示:

结果是:
年,A,B,C,D
。我需要的是保留值
Year
,并合并其余值。我怎么做

编辑:

我已经这样做了

json = [
    {Year: "2016", A: "2.015", B: "1.959"},
    {Year: "2017", A: "1.200", C: "2.247"},
    {Year: "2018", A: "1.301", C: "2.056", D: "1"}
];
keys= Object.keys(json[0]); // console.log(keys) = Year,A,B

我正在从json的第一个对象读取密钥,但现在我需要混合使用每个对象和其他密钥

简单-使用
reduce
对象。密钥

const数据=[{
年份:“2016年”,
A:“2.015”,
B:“1.959”
}, {
年份:“2017年”,
A:“1.200”,
C:“2.247”
}, {
年份:“2018年”,
A:“1.301”,
C:“2.056”,
D:“1”
}];
常量输出=数据减少((acc,val)=>{
Object.keys(val).forEach(key=>{
如果(!附件包括(键)){
acc.push(按键);
}
});
返回acc;
}, []);

控制台日志(输出)简单-使用
减少
对象。键

const数据=[{
年份:“2016年”,
A:“2.015”,
B:“1.959”
}, {
年份:“2017年”,
A:“1.200”,
C:“2.247”
}, {
年份:“2018年”,
A:“1.301”,
C:“2.056”,
D:“1”
}];
常量输出=数据减少((acc,val)=>{
Object.keys(val).forEach(key=>{
如果(!附件包括(键)){
acc.push(按键);
}
});
返回acc;
}, []);

控制台日志(输出)使用
forEach
Set

var a=[{年份:“2016年”,a:“2.015年”,B:“1.959年”},
{年份:“2017”,A:“1.200”,C:“2.247”},
{年份:“2018年”,A:“1.301”,C:“2.056”,D:“1”}]
var-arr=[];
a、 forEach((e)=>{
arr=[…arr,…Object.keys(e)]
})
arr=[…新集合(arr)]

console.log(arr)
使用
forEach
Set

var a=[{年份:“2016年”,a:“2.015年”,B:“1.959年”},
{年份:“2017”,A:“1.200”,C:“2.247”},
{年份:“2018年”,A:“1.301”,C:“2.056”,D:“1”}]
var-arr=[];
a、 forEach((e)=>{
arr=[…arr,…Object.keys(e)]
})
arr=[…新集合(arr)]

console.log(arr)
下面的代码将生成一组唯一键。然后可以轻松地将其转换回数组或字符串

const数据=[
{年份:“2016”,A:“2.015”,B:“1.959”},
{年份:“2017”,A:“1.200”,C:“2.247”},
{年份:“2018年”,A:“1.301”,C:“2.056”,D:“1”}
];
constkeys=newset([].concat(…data.map(o=>Object.keys(o)));
log([…键]);

console.log([…键].join(',')下面的代码将生成一组唯一键。然后可以轻松地将其转换回数组或字符串

const数据=[
{年份:“2016”,A:“2.015”,B:“1.959”},
{年份:“2017”,A:“1.200”,C:“2.247”},
{年份:“2018年”,A:“1.301”,C:“2.056”,D:“1”}
];
constkeys=newset([].concat(…data.map(o=>Object.keys(o)));
log([…键]);

console.log([…键].join(',')
遍历每个对象,取出键并将其添加到
集合

var json=[
{年份:“2016”,A:“2.015”,B:“1.959”},
{年份:“2017”,A:“1.200”,C:“2.247”},
{年份:“2018年”,A:“1.301”,C:“2.056”,D:“1”}
];
变量集=新集();
forEach((值)=>Object.keys(值).forEach(键=>{set.add(键);}));

log([…set])
遍历每个对象,取出键并将其添加到
集合

var json=[
{年份:“2016”,A:“2.015”,B:“1.959”},
{年份:“2017”,A:“1.200”,C:“2.247”},
{年份:“2018年”,A:“1.301”,C:“2.056”,D:“1”}
];
变量集=新集();
forEach((值)=>Object.keys(值).forEach(键=>{set.add(键);}));


log([…set])
您到底想要什么作为输出?您做了什么来尝试实现它?就像
Year,key1,key2,evey key这样的字符串,但不重复
就像示例:
Year,a,B,C,D
那么您只需要所有的键,而不需要值?因此,输出,例如,
[“年”,“A”,“B”,“C”,“D”]
?请参见
对象。键
方法你到底想要什么作为输出?你做了什么来尝试实现它?就像
年,键1,键2,每个键一样的字符串,但不重复
,例如:
年,A,B,C,D
,所以你只想要所有的键,没有价值观?因此,输出,例如,
[“年”、“A”、“B”、“C”、“D”]
?请参见
对象。键
方法使用
映射
,然后设置一个
,它将删除对象的重复项you@quirimmo我没有
Set
方面的经验,你能用你解决问题的方法编辑我的答案吗?对不起,我刚刚读了。我是打电话的,我确实发了一个回复,但我不能尝试。如果可以的话,可以将其作为代码片段添加到编辑中。这一个可以。我添加了
.join(',')
,得到了我需要的东西。感谢使用
映射
,然后设置一个
,它将为you@quirimmo我没有
Set
方面的经验,你能用你解决问题的方法编辑我的答案吗?对不起,我刚刚读了。我是打电话的,我确实发了一个回复,但我不能尝试。如果可以的话,可以将其作为代码片段添加到编辑中。这一个可以。我添加了
.join(',')
,得到了我需要的东西。谢谢,但今年在哪里?我需要:年,A,B,C,正确的效率。为什么你认为年总是数组中的第一个元素?对象属性是无序的,没有理由期望它们在对象文本中的顺序得到维护(并且可以证明不是这样)。很好,但是年份在哪里?我需要:年,A,B,C,正确的效率。为什么你认为年总是数组中的第一个元素?对象属性是无序的,没有理由期望它们在对象文本中的顺序得到维护(事实证明并非如此)。
json = [
    {Year: "2016", A: "2.015", B: "1.959"},
    {Year: "2017", A: "1.200", C: "2.247"},
    {Year: "2018", A: "1.301", C: "2.056", D: "1"}
];
keys= Object.keys(json[0]); // console.log(keys) = Year,A,B
var a=[{Year: "2016", A: "2.015", B: "1.959"}, {Year: "2017", A: "1.200", C: "2.247"}, {Year: "2018", A: "1.301", C: "2.056", D: "1"}];

console.log([
  ...new Set(a.map(e. => Object.keys(e)).flat())
].join(','));