iT邦幫忙

2

Javascript 中如何取出物件陣列中的索引及元素

  • 分享至 

  • xImage

Javascript 中如何取出物件陣列中的索引及元素?

在Javascript中,有如下的物件:

var objs = [{'M1': 'A'}, {'M2': 'B'}];

我想要取出其中的'M1','M2','A','B'等等,程式該如何寫?
我用下列的程式測試,不能得到我想要的結果:

var objs = [{'M1': 'A'}, {'M2': 'B'}];
var mark = 'M1';

window.onload = testobj;

function testobj() {

  for (let key of Object.keys(objs)){
    console.log(key, ": ", objs[key]);
    if(key == mark) console.log("Find mark"); // can't get mark
  }
  
  console.log("------");
  
  for (let key in Object.keys(objs)){
    console.log(key, ": ", objs[key]);
    if(key == mark) console.log("Find mark"); // can't get mark
  }
}

上述程式碼在JSBin跑出的結果如下:

"0"
": "
[object Object] {
  M1: "A"
}
"1"
": "
[object Object] {
  M2: "B"
}
"------"
"0"
": "
[object Object] {
  M1: "A"
}
"1"
": "
[object Object] {
  M2: "B"
}
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中
1
Felix
iT邦研究生 2 級 ‧ 2023-05-05 14:47:03
const arr = [
    { M1: 'A' },
    { M2: 'B' }
];

Using Object.keys

for (const obj of arr) {
    const key = Object.keys(obj)[0];
    const val = obj[key];

    console.log(key, val);
}

Using Object.entries

for (const obj of arr) {
    const [[key, val]] = Object.entries(obj);

    console.log(key, val);
}

有很多方式能達成,只要按照自己的需求選擇即可。

1
alien663
iT邦研究生 5 級 ‧ 2023-05-05 14:47:48
for(let item of objs){
    for(let keyname in item){
        console.log(keyname)
        console.log(item[keyname])
    }
}
0
froce
iT邦大師 1 級 ‧ 2023-05-05 14:53:06
let objs = [{'M1': 'A'}, {'M2': 'B'}];

for (let item of objs){
    for (let key of Object.keys(item)){
        console.log(key, item[key])
    }
}

要取當然可以取,多一層迴圈就行,但是你有沒有想到一個問題:
key值不能重複但是value值是可以的,像你要求的一樣這樣平行展開,會不會遇到反而更不好用的狀況?

另外要篩選只要這樣就好

let filtered = objs.filter((item)=>Object.keys(item).includes("M1"))

原來有這麼多種方法,學到了,謝謝各位

我要發表回答

立即登入回答