提取对象数组属性的数组

时间:2017-05-25 10:14:17

标签: javascript arrays angular object ecmascript-6

我有一组对象。

每个对象中都有一个langauges数组。

我需要提取所有对象的所有语言,并且它们必须是唯一的(语言不应该在此数组中多次)

这是我到目前为止所做的:

this.countries.map((country) => {
      country.languages.forEach((language) => {
        this.languages.push(language);
      });
    });

不确定它对性能的理想程度。实际上它甚至多次显示所有语言。

从objet属性数组中创建列表的最佳方法(性能)的任何想法? enter image description here

3 个答案:

答案 0 :(得分:0)

您可以使用Set来确保元素是唯一的:

https://developer.mozilla.org/it/docs/Web/JavaScript/Reference/Global_Objects/Set

所以在你的情况下:

this.languages = new Set();

而不是做推动,做到这一点:

this.languages.add(language);

这将保持您的独特性。

答案 1 :(得分:0)

您可以使用SetArray.prototype.concat()

Contact::all()

答案 2 :(得分:0)

假设您的要求很可能是您正在寻找的

package com.test;


import java.io.Serializable;

import org.apache.ignite.binary.BinaryObjectException;
import org.apache.ignite.binary.BinaryReader;
import org.apache.ignite.binary.BinaryWriter;
import org.apache.ignite.binary.Binarylizable;
import org.apache.ignite.cache.query.annotations.QuerySqlField;

public class Test  implements Binarylizable ,Serializable{

            /**
            * 
             */
            private static final long serialVersionUID = 1L;
            String assetid;
            @QuerySqlField(index = true)
            String asset_desc;

            String groupid;


            public String getGroupId() {
                            return groupid;
            }
            public void setGroupId(String groupId) {
                            this.groupid = groupId;
            }
            public String getAssetid() {
                            return assetid;
            }
            public void setAssetid(String assetid) {
                            this.assetid = assetid;
            }
            public String getAsset_desc() {
                            return asset_desc;
            }
            public void setAsset_desc(String asset_desc) {
                            this.asset_desc = asset_desc;
            }
            @Override
            public void readBinary(BinaryReader reader) throws BinaryObjectException {
                            assetid = reader.readString("assetid");
                            asset_desc = reader.readString("asset_desc");
                            groupid =  reader.readString("groupid");


            }
            @Override
            public void writeBinary(BinaryWriter writer) throws BinaryObjectException {
                            writer.writeString("assetid", assetid);
                 writer.writeString("asset_desc", asset_desc);
                 writer.writeString("groupid", groupid);

            }


}