打字稿:Map.has没有返回正确的值

时间:2017-10-22 11:19:13

标签: javascript typescript

我遍历一个打字稿数组并将对象添加到地图中。键应该是唯一的,所以我检查它们是否已经与Map.has

一起存在

但是,由于某种原因,它不会返回正确的值并添加重复的键。请检查我的代码:

    @GET
    @Path("/downloadFile/{id}")
    @Produces({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_JSON })
    public Response download(@PathParam("id") String id) {

        System.out.println("Server Connected");
        DocumentObject obj = null; // get some
        DataAccess ds = new DataAccess();
        byte[] buf = null;
        String path = null;
        try {
            List list = ds.getDocumentObjectByKey(id);
            obj = (DocumentObject) list.get(0);
            buf = obj.getImage();
            String s = obj.getFileName().replaceAll(" ", "-");

            path = s;// Settings.getTempFolder()+File.pathSeparator + s;

        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

        // final GenericEntity<List<DocumentObject>> entity = new
        // GenericEntity<List<DocumentObject>>(list) {
        // };

        return Response.ok(buf).build();
    }

它们的键(源系统对象)如下所示:

    for (const userAccount of res) {

        // create key if doesn't exist
        if (!this.sourceSystemsUserAccounts.has(userAccount.sourceSystem)) {
            this.sourceSystemsUserAccounts.set(userAccount.sourceSystem, new Array<UserAccount>());
        }

        // add user account to map and set new array
        const value: Array<UserAccount> = this.sourceSystemsUserAccounts.get(userAccount.sourceSystem);
        value.push(userAccount);
        this.sourceSystemsUserAccounts.set(userAccount.sourceSystem, value);
    }

第三次迭代后,我的地图如下所示: Map in Chrome debugger

有没有人知道我做错了什么?

更新:在这里您可以看到完整响应对象的预览: response object

1 个答案:

答案 0 :(得分:1)

你有一个班级作为关键。 class SourceSystems。该类的两个实例不是相等。因此重复。

一种解决方案

使用字符串键作为地图。