iT邦幫忙

1

Javascript 二維物件陣列 取出 部分二維物件陣列(Distinct)

各位高手大家好,是初學Java的新手,有個問題請益

有一個陣列如下 共6筆(4個欄位)
var arr =
[{Key: "TEMP01", Type: "TEMP", TypeName: "溫度", Name: "0-9度"},
{Key: "TEMP02", Type: "TEMP", TypeName: "溫度", Name: "10-19度"},
{Key: "TEMP03", Type: "TEMP", TypeName: "溫度", Name: "20-29度"},
{Key: "WET01", Type: "WET", TypeName: "濕度", Name: "20%"},
{Key: "WET02", Type: "WET", TypeName: "濕度", Name: "50%"},
{Key: "WET03", Type: "WET", TypeName: "濕度", Name: "80%"}]

希望的結果是將Type與TypeName欄位篩選出來

[Type: "TEMP",TypeName: "溫度",
Type: "WET",TypeName: "濕度"]

透過Javascript或JS語法如何篩選出想要的結果?

2
dragonH
iT邦超人 5 級 ‧ 2020-03-10 11:25:29
最佳解答

各位高手大家好,是初學Java的新手,有個問題請益

有一個陣列如下 共6筆(4個欄位)

codepen

然後 javascript ≠ java

這個也不是二維陣列

不知道是不是你是不是打錯

真要

[Type: "TEMP",TypeName: "溫度",
Type: "WET",TypeName: "濕度"]

的話

codepen

看更多先前的回應...收起先前的回應...
dragonH iT邦超人 5 級 ‧ 2020-03-10 11:32:10 檢舉

喔 有要篩結果喔

那我改一下

應該是

`${el.Type}:${el.Name}`

比較符合/images/emoticon/emoticon48.gif

抱歉 我還不太清楚這些名詞的差異
確實是我想要的

剛剛測試您的範例,結果有6筆,但欄位對了
上方篩選的部分看不懂,再請您說明一下加在哪??謝謝

dragonH iT邦超人 5 級 ‧ 2020-03-10 11:44:57 檢舉

a999999976

我後來看了一下

你真的是要

希望的結果是將Type與TypeName欄位篩選出來

這兩個不都是固定的

dragonH iT邦超人 5 級 ‧ 2020-03-10 11:55:08 檢舉

a999999976

codepen

這個應該才是你要的

需求上只有要篩出Type跟TypeName就好
Key跟Name暫時不需要

dragonH iT邦超人 5 級 ‧ 2020-03-10 12:01:08 檢舉

a999999976

所以是這樣?

codepen

希望出來的是兩筆兩個欄位(Type跟TypeName)
上面結果還是6筆,請問如何縮減呢?

dragonH iT邦超人 5 級 ‧ 2020-03-10 12:14:01 檢舉

那就是這樣了

codepen

基本上就是 array 的操作

內容跟上回一樣是6個嗎?有辦法把重複剃除嗎?

dragonH iT邦超人 5 級 ‧ 2020-03-10 12:42:52 檢舉

兩個而已啊

如果沒有flat,就是我要的結果了,謝謝您:)

dragonH iT邦超人 5 級 ‧ 2020-03-10 13:22:13 檢舉

/images/emoticon/emoticon12.gif

0
froce
iT邦大師 1 級 ‧ 2020-03-10 13:09:11

https://jsbin.com/nerunofeko/edit?html,js,console

Object的值相等這塊比較難處理。
然後通常在接api,欄位也不會這樣處理。

物件相等剃除,讓我覺得很頭疼
您的方法也可行!
謝謝您

0
淺水員
iT邦研究生 4 級 ‧ 2020-03-10 15:00:16

湊熱鬧,回歸基本的寫法

let arr =
[{Key: "TEMP01", Type: "TEMP", TypeName: "溫度", Name: "0-9度"},
{Key: "TEMP02", Type: "TEMP", TypeName: "溫度", Name: "10-19度"},
{Key: "TEMP03", Type: "TEMP", TypeName: "溫度", Name: "20-29度"},
{Key: "WET01", Type: "WET", TypeName: "濕度", Name: "20%"},
{Key: "WET02", Type: "WET", TypeName: "濕度", Name: "50%"},
{Key: "WET03", Type: "WET", TypeName: "濕度", Name: "80%"}];

let exists={};
let result=[];
arr.forEach((el)=>{
	if(!exists[el.Type]) {
		exists[el.Type]=true;
		result.push({Type: el.Type, TypeName: el.TypeName});
	}
});

您的方法也OK,比較易懂

我要發表回答

立即登入回答