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"
}
const arr = [
{ M1: 'A' },
{ M2: 'B' }
];
for (const obj of arr) {
const key = Object.keys(obj)[0];
const val = obj[key];
console.log(key, val);
}
for (const obj of arr) {
const [[key, val]] = Object.entries(obj);
console.log(key, val);
}
有很多方式能達成,只要按照自己的需求選擇即可。
for(let item of objs){
for(let keyname in item){
console.log(keyname)
console.log(item[keyname])
}
}
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"))