gpt4 book ai didi

javascript - js : array with in an associative array

转载 作者:行者123 更新时间:2023-12-02 17:37:59 24 4
gpt4 key购买 nike

我正在尝试为以下数据设置关联数组:

name       date        alpha    beta
Andrew 12/08/07 2.3 1.4
5/12/07
26/03/08
____________________________________
Fred 3/09/07 2.1 1.1
23/01/08
____________________________________

基本上,每个患者都会有一个姓名和 alpha 、 beta 值,以及他们去看医生的多个日期。我正在考虑类似以下内容,其中名称是主键,日期存储在数组中,alpha、beta 是与键关联的浮点值。

var info = [{ name: [{ dates: [ ], alpha: float, beta: float  }] }];

然后该信息数组将在读取 csv 文件时填充。初始化这样的关联数组的正确格式是什么?或者什么其他数据结构是表示此类数据的好方法?

提前致谢!

最佳答案

编辑:由于每个患者都有唯一的名称,因此您应该考虑使用单个对象,而不是使用数组,其中每个患者都是由对象键标识的对象,例如:

var patientList = {
andy: {},
bob: {}
};

要将 CSV 文件中的数据放入此结构中,您可以考虑如下操作:

var csv = 'Andrew\t12/08/07\t1.2\t3.4\nAndrew\t15/09/08\t1.2\t3.4\nAndrew\t14/08/07\t1.2\t3.4\t\nBob\t18/09/08\t1.2\t3.4\nAndrew\t21/08/07\t1.2\t3.4\nDavid\t31/09/08\t1.2\t3.4\nAndrew\t22/08/07\t1.2\t3.4\t\nSam\t26/09/08\t1.2\t3.4';

// Split the CSV file at the carriage return.
var data = csv.split('\n');

// Recursive over the data with `map`, splitting each line up
// on the tabs and returning a patient object for each.
data = data.map(function (el) {
var patient = el.split('\t');
return {
name: patient[0],
date: patient[1],
alpha: patient[2],
beta: patient[3]
}
});


function getListOfPatientNames(arr) {
var newarr = [];

// For each patient object return the patient name only
newarr = arr.map(function (patient) {
return patient.name;
});

// A quick way of filtering out duplicates
return newarr.filter(function(elem, pos) {
return newarr.indexOf(elem) == pos;
});
}

// Return a unique list of names, and sort them.
var names = getListOfPatientNames(data).sort();

var patientList = {};

for (var i = 0, l = data.length; i < l; i++) {
var name = data[i].name;

// If the patient name doesn't exist in patientList yet
if (!patientList[name]) {

// Add a new patient object using the name as the key
var newPatient = {
dates: [data[i].date],
alpha: data[i].alpha,
beta: data[i].beta
};
patientList[name] = newPatient;
} else {

// If the patient already exists push the date to the dates array
patientList[name].dates.push(data[i].date);
}
}

<强> Demo

关于javascript - js : array with in an associative array,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22454863/

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