簡體   English   中英

如何使用array.from和new set方法返回多個值

[英]How to return multiple values with the method array.from and new set

我想知道是否有可能從對象數組中使用方法array.from new set檢索幾個唯一值。

例如 :

  this.data = [ { "_id": "5bf57b965401169dd81c2a51", "age": 35, "name": "Paige Zamora", "gender": "female", "company": "AUTOMON", "reference_id": "12" }, { "_id": "5bf57b96c2c3b88adff4b972", "age": 40, "name": "Jennifer Carr", "gender": "female", "company": "SYNKGEN", "reference_id": "11" }, { "_id": "5bf57b969dd839926db78767", "age": 38, "name": "Weaver Rosales", "gender": "male", "company": "ETERNIS", "reference_id": "10" }, { "_id": "5bf57b968c845ea691e76c84", "age": 31, "name": "Myers Pickett", "gender": "male", "company": "ETERNIS", "reference_id": "10" }, { "_id": "5bf57b96998c44eff083d3fa", "age": 36, "name": "Dona Nicholson", "gender": "female", "company": "ETERNIS", "reference_id": "10" } ] 

我想檢索以下唯一值: reference_id和與reference_id關聯的公司 ,這將給出以下信息:

[{12, AUTOMON}, {11, SYNKGEN}, {10, ETERNIS}]

我以為我會使用這種方法:

const list = Array.from (new Set (this.data.map ({reference_id}) => reference_id)));

什么返回:

[12,11,10]

我不知道該方法是否可以用於返回多個值,例如上面的列表?

您可以將JSON與所需數據一起使用,然后將解析后的值作為結果。

您可能會問,為什么是字符串而不是對象。 這里的問題是每個具有所需屬性的新對象都是一個新對象,並且不一樣。

Set可以使用單個圖元或對象進行檢查,並檢查對象的引用是否相同。 通過獲取字符串,可以檢查該值,並且在集合中獲得唯一的字符串。 這需要將JSON轉換回對象。

 var data = [{ _id: "5bf57b965401169dd81c2a51", age: 35, name: "Paige Zamora", gender: "female", company: "AUTOMON", reference_id: "12" }, { _id: "5bf57b96c2c3b88adff4b972", age: 40, name: "Jennifer Carr", gender: "female", company: "SYNKGEN", reference_id: "11" }, { _id: "5bf57b969dd839926db78767", age: 38, name: "Weaver Rosales", gender: "male", company: "ETERNIS", reference_id: "10" }, { _id: "5bf57b968c845ea691e76c84", age: 31, name: "Myers Pickett", gender: "male", company: "ETERNIS", reference_id: "10" }, { _id: "5bf57b96998c44eff083d3fa", age: 36, name: "Dona Nicholson", gender: "female", company: "ETERNIS", reference_id: "10" }], unique = Array.from( new Set( data.map(({ reference_id, company }) => JSON.stringify({ reference_id, company })) ), json => JSON.parse(json) ); console.log(unique); 
 .as-console-wrapper { max-height: 100% !important; top: 0; } 

您還可以將它們分組在Map (忽略任何重復,並且鍵是reference_idcompany的字符串表示形式),並從其值返回一個數組:

 var data = [{ "_id": "5bf57b965401169dd81c2a51", "age": 35, "name": "Paige Zamora", "gender": "female", "company": "AUTOMON", "reference_id": "12" }, { "_id": "5bf57b96c2c3b88adff4b972", "age": 40, "name": "Jennifer Carr", "gender": "female", "company": "SYNKGEN", "reference_id": "11" }, { "_id": "5bf57b969dd839926db78767", "age": 38, "name": "Weaver Rosales", "gender": "male", "company": "ETERNIS", "reference_id": "10" }, { "_id": "5bf57b968c845ea691e76c84", "age": 31, "name": "Myers Pickett", "gender": "male", "company": "ETERNIS", "reference_id": "10" }, { "_id": "5bf57b96998c44eff083d3fa", "age": 36, "name": "Dona Nicholson", "gender": "female", "company": "ETERNIS", "reference_id": "10" } ]; var res = Array.from(data.reduce((acc, {reference_id, company}) => { acc.set(`${reference_id},${company}`, {reference_id, company}); return acc; }, new Map()).values()); console.log(res); 

嘗試這個:

this.data.map((el) =>{ return {age: el.age, company: el.company} })

// You get this array
//0: {age: 35, company: "AUTOMON"}
//1: {age: 40, company: "SYNKGEN"}
//2: {age: 38, company: "ETERNIS"}
//3: {age: 31, company: "ETERNIS"}
//4: {age: 36, company: "ETERNIS"}

{12,AUTOMON}沒有意義,obj是{鍵:值,鍵:值...}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM