组织数组的算法

时间:2013-10-08 04:58:57

标签: arrays algorithm node.js

问题在于:

我有一个包含用户信息的数组。每个条目由数组中的空白字段分隔。

对于此示例,我们假设数据字段是ID,first,last,phone和email。但是,如果用户没有特定字段的值,则完全省略它。

所以这就是数组的样子

users[0] = 45049345
users[1] = Bob
users[2] = Smith 
users[3] = 789-456-1230
users[4] = bob@gmail.com
users[5] = 
users[6] = 63515987 
users[7] = Joe 
users[6] = Schmoe 
users[8] = joe@gmail.com
users[9] = 

我想循环这个数组并将每个用户的数据存储在数据库中,但是我不知道如何验证我是否在该位置存储了正确的信息,因为数组中没有模式。由于Joe没有电话号码,因此他的电子邮件将被存储为他的电话号码。这将导致随后的输入被1个索引关闭。

有关如何解决此问题的任何想法?

P.S。我正在使用node.js

编辑:这是实际数据的一个例子

021870143-14        
lastName    
firstName           
U   
5/16/1988   
11/6/2008   
A   
11/6/2008 6:0:2 
NF  
245         
MAIN ST.    
101     
NEW YORK    
NY
10002                           
11/4/2008   
34      
SD1 
MUNC1J-036  
MAG1-1  
LEG77   
SENT34  
CONG5   
CNTY                
34-1                
10/27/2008 19:59:53                             
NF  

2 个答案:

答案 0 :(得分:1)

这是伪代码,因为我不知道javascript。我的理由是我认为Javascript有字典/关联数组/哈希表等。

new_user = {}
for i from 0 to arr.length
    if arr[i] = null/Omitted field/nil/None/whatever
        database.add_entry(new_user) // Add finished user table to database
        new_user = {} // Start new dictionary
    else
        field = arr[i]
        if field contains '@'
            new_user.email = field
        else if field contains '-'
            new_user.phone_number = field
        else if is_a_number(field)
            new_user.id = field
        else if new_user has first_name
            new_user.last_name = field
        else
            new_user.first_name = field

答案 1 :(得分:0)

使用标记化..

示例:

users[0] = "45049345,Bob,Smith,789-456-1230,bob@gmail.com";
users[1] = "63515987,Joe,Schmoe,-,joe@gmail.com";

过程:

for (user in users)
{
    for (detail in user)
    {
        document.write (detail + "<br>");
    }
}