首先,我是js的新生,而不是母语 - 英语,我为我的问题做了一些研究,我发现了但是认真的我仍然无法理解,这里最接近{ {3}},事实上我只是意识到我真的很蠢。我无法相信自己,我无法理解它,这就是我的问题,我希望在此之后我能理解。
var obj = [
{hari:"senin", kehadiran:"masuk" , alasan:""},
{hari:"selasa", kehadiran:"masuk" , alasan:""},
{hari:"rabu", kehadiran:"absen" , alasan:"dinas keluar"},
]
//console.log(obj[1].kehadiran);
for (var prop in obj) {
console.log("hari :" + prop + " = " + obj[prop]);
}
我有这个对象,只是想把它改成这样:
Hari: senin
Kehadiran: masuk
Hari: rabu
Kehadiran: masuk
Hari: jumat
Kehadiran: absen
Alasan: dinas luar
但我认为我的问题可能是因为我不完全理解迭代...键或类似的东西,这看起来像数组维?如果你能给我链接或参考我在这个问题上缺乏的东西,那么我可以指出并掌握它。我很抱歉提出这样一个简单的问题,但我真的很困惑。
答案 0 :(得分:1)
for(键入对象)用于对象。你有一个数组
var obj = [
{hari:"senin", kehadiran:"masuk" , alasan:""},
{hari:"selasa", kehadiran:"masuk" , alasan:""},
{hari:"rabu", kehadiran:"absen" , alasan:"dinas keluar"},
]
obj.forEach(function(item){
console.log(item.hari, item.kehadiran);
});
https://jsfiddle.net/5ghkh1L8/
替代:
for(var i = 0; i < obj.length; i++) {
console.log(obj[i].hari, obj[i].kehadiran);
}
答案 1 :(得分:0)
这可能会对你有帮助。
不要在for in
个对象上使用array
循环。检查here
使用map
| filter
| reduce
作用于数组以获取数组中的对象并返回修改后的数组。
var obj = [
{hari:"senin", kehadiran:"masuk" , alasan:""},
{hari:"selasa", kehadiran:"masuk" , alasan:""},
{hari:"rabu", kehadiran:"absen" , alasan:"dinas keluar"},
];
var tempObj;
var newObj = obj.map(function(item){
tempObj = {};
for(var key in item){
if(item.hasOwnProperty(key) && item[key]){
tempObj[key] = item[key];
}
}
return tempObj;
});
console.log(newObj);
&#13;
答案 2 :(得分:0)
你需要迭代两次,首先在存储对象的数组上,然后在对象上进行迭代。属性:
var obj = [
{hari:"senin", kehadiran:"masuk" , alasan:""},
{hari:"selasa", kehadiran:"masuk" , alasan:""},
{hari:"rabu", kehadiran:"absen" , alasan:"dinas keluar"},
]
//iterating over array
for (var key in obj) {
var currentObj = obj[key];
//iterating over object's properties
for(var prop in currentObj){
console.log("hari :" + prop + " = " + currentObj[prop]);
}
}
希望这有帮助
将提供以下输出:
hari :hari = senin
hari :kehadiran = masuk
hari :alasan =
hari :hari = selasa
hari :kehadiran = masuk
hari :alasan =
hari :hari = rabu
hari :kehadiran = absen
hari :alasan = dinas keluar
答案 3 :(得分:0)
使用Array.prototype.map()
和delete operator
var obj = [
{hari:"senin", kehadiran:"masuk" , alasan:""},
{hari:"selasa", kehadiran:"masuk" , alasan:""},
{hari:"rabu", kehadiran:"absen" , alasan:"dinas keluar"},
];
var newObj = obj.map(function(item){
if(item.alasan.trim() === "")
delete item.alasan;
return item;
});
console.log(newObj);
&#13;
答案 4 :(得分:0)
var obj = [
{hari:"senin", kehadiran:"masuk" , alasan:""},
{hari:"selasa", kehadiran:"masuk" , alasan:""},
{hari:"rabu", kehadiran:"absen" , alasan:"dinas keluar"}
];
obj.forEach(function(item) { //this is a safe way to loop through our array
Object.keys(item).forEach(function(key) {
if (item[key] !== "") console.log(key + ': ' + item[key]);
});
});
你也可以坚持使用for
循环。
var obj = [
{hari:"senin", kehadiran:"masuk" , alasan:""},
{hari:"selasa", kehadiran:"masuk" , alasan:""},
{hari:"rabu", kehadiran:"absen" , alasan:"dinas keluar"}
];
for (var i = 0; i < obj.length; i++) {
var keys = Object.keys(obj[i]);
for (var k = 0; k < keys.length; k++)
if (obj[i][keys[k]] !== "") console.log(keys[k] + ': ' + obj[i][keys[k]]);
}