Javascript 读取Json数据并在angular component中使用

Javascript 读取Json数据并在angular component中使用,javascript,node.js,angular,typescript,angular8,Javascript,Node.js,Angular,Typescript,Angular8,我正在处理一个角度应用程序。我必须从json读取数据,并分两部分进行处理 使用express从json读取数据:我有以下按字母顺序排序的json { “1”:“安迪”, “2”:“比利” “3”:“携带” “4”:“多达” } 左手边是身份证,右手边是姓名。我必须用express读取这些数据,并在角度分量中访问这些数据 在我的角度分量中,我有另一个数组,它也被排序。该数组如下所示: [ { "Name": "Andy",

我正在处理一个角度应用程序。我必须从json读取数据,并分两部分进行处理

  • 使用express从json读取数据:我有以下按字母顺序排序的json

    { “1”:“安迪”, “2”:“比利” “3”:“携带” “4”:“多达” }

  • 左手边是身份证,右手边是姓名。我必须用express读取这些数据,并在角度分量中访问这些数据

  • 在我的角度分量中,我有另一个数组,它也被排序。该数组如下所示:

    [
           {
             "Name": "Andy",
             "Id": "1"
             "IncomingTime": "2020-06-19T11:02+00:00",
             "Outgoingtime": "2020-06-19T11:07+00:00"
           },
           {
             "Name": "Billy",
    
             "Id": "2"
             "IncomingTime": "2020-06-19T11:05+00:00",
             "Outgoingtime": "2020-06-19T11:17+00:00"
           },
           {
             "Name": "Ciena",
             "Id": 5
             "IncomingTime": "2020-06-19T11:05+00:00",
             "Outgoingtime": "2020-06-19T11:07+00:00"
           },
           {
             "Name": "Doda",
             "Id": "4"
             "IncomingTime": "2020-06-19T11:05+00:00",
             "Outgoingtime": "2020-06-19T11:07+00:00"
           }
         ]
    

  • 一旦上述Json数据在组件中可用(第1点中的Json),我就必须创建一个新数组(或任何可以排序的数据结构)。在这个新数组中,我必须以这样一种方式放置数据,即来自上面Json的按字母顺序排序的“Name”应该与排序数组中的数据相匹配。若名称匹配,则内容(名称、id、收入时间、支出时间)将复制到该特定“名称”的新数组中,该“名称”也将被排序。假设在比较名称时,我们遇到了一个在排序数组中没有数据的名称,那么我们只需要在新数组中保留名称,而不管数据是否存在。和上面的数据一样,“进位”数据在排序数组中不存在,但在最终数组中“进位”应该存在。我该怎么做呢?

    你可以用Lodash来做。Lodash提供了实现您想要的功能。文件是

    从中安装Lodash

    从“Lodash”导入Lodash
    import*as

    我想这就是你想要的

    const arr = { 1: 'Andy', 2: 'Billy', 3: 'Carry', 4: 'Doda' };
    
    const data = [
        {
            "Name": "Andy",
            "Id": "1",
            "IncomingTime": "2020-06-19T11:02+00:00",
            "Outgoingtime": "2020-06-19T11:07+00:00"
        },
        {
            "Name": "Billy",
            "Id": "2",
            "IncomingTime": "2020-06-19T11:05+00:00",
            "Outgoingtime": "2020-06-19T11:17+00:00"
        },
        {
            "Name": "Ciena",
            "Id": 5,
            "IncomingTime": "2020-06-19T11:05+00:00",
            "Outgoingtime": "2020-06-19T11:07+00:00"
        },
        {
            "Name": "Doda",
            "Id": "4",
            "IncomingTime": "2020-06-19T11:05+00:00",
            "Outgoingtime": "2020-06-19T11:07+00:00"
        }
        ];
    
    const newArray  = _.map(arr, item => {
        const value = _.find(data, ['Name', item]);
        const obj = value ? value : {Name: item};
    
        return obj;
    });
    
    console.log(newArray);
    

    检查我的回答贴图功能用于创建新对象。我将'arr'传递给map函数,该函数将迭代'arr'中的每个值。查找用于检查“数据”中是否存在“项”。如果不存在,则该值未定义,因此我将为“obj”else值分配一个新对象。您可以在映射函数中添加断点以检查是否正常工作。它正常工作,但不符合预期,因为当我第一次向组件发送数据时,这段代码给出了正确的结果,但当我在不刷新的情况下发送seconf time数据时,它会保留以前的数据并附加新的数据。这就是问题所在。当您第二次发送数据时,空的newArray=[]如下所示。