Javascript 如何连接重复键的值
在将csv读入javascript字典时,我如何连接原本是重复键的值?我已经看到了如何使用bash、c#和perl实现这一点的答案,但我还没有找到Javascript的答案。以下是我所拥有的:Javascript 如何连接重复键的值,javascript,csv,dictionary,concatenation,Javascript,Csv,Dictionary,Concatenation,在将csv读入javascript字典时,我如何连接原本是重复键的值?我已经看到了如何使用bash、c#和perl实现这一点的答案,但我还没有找到Javascript的答案。以下是我所拥有的: var subjects = {}; d3.csv("test.csv", function(data) { for (var i = 0; i < data.length; i++) { subjects[data[i].Id] = data[i].VALUE;
var subjects = {};
d3.csv("test.csv", function(data) {
for (var i = 0; i < data.length; i++)
{
subjects[data[i].Id] = data[i].VALUE;
}
console.log(subjects);
});
我想输出为:
{"id1": ["subject1", "subject3"], "id2": ["subject1"]...}
只需检查您的输出是否已经有了键,如果已经有了,则将新值添加到数组中。否则您将创建一个数组
d3.csv("test.csv", function(data) {
var subjects = {};
for (var i = 0; i < data.length; i++)
{
// Check if key already exists
if(subjects.hasOwnProperty(data[i].Id)){
// push data to array
subjects[data[i].Id].push(data[i].VALUE);
}else{
// create new key and array
subjects[data[i].Id] = [data[i].VALUE];
}
}
console.log(subjects);
});
d3.csv(“test.csv”),函数(数据){
var主题={};
对于(变量i=0;i
在for
循环中尝试以下操作:
typeof subjects[data[i].Id] == 'undefined' && (subjects[data[i].Id] = []);
subjects[data[i].Id].push(data[i].VALUE);
您可以将其放入一个数组,然后将内容推入该数组 var主题={}
d3.csv("test.csv", function(data) {
for (var i = 0; i < data.length; i++)
{
//first time we see this id, turn it into an array
if(typeof subjects[data[i].Id] != "object"){
subjects[data[i].Id] = [];
}
//push content to the array
subjects[data[i].Id].push(data[i].VALUE);
}
console.log(subjects);
});
d3.csv(“test.csv”),函数(数据){
对于(变量i=0;i
如果使用reduce
,您可以稍微减少代码的占用空间:
var out = data.reduce((p, c) => {
const id = c.Id;
p[id] = p[id] || [];
p[id].push(c.VALUE);
return p;
}, {});
结果
{
"id1": [
"subject1",
"subject3"
],
"id2": [
"subject1"
]
}
{
"id1": [
"subject1",
"subject3"
],
"id2": [
"subject1"
]
}