検索条件に基づいて以下の値を解析し、その結果をテーブルに出力しようとしています。私はコンソールに目的の結果を正しく解析したり、すべての結果をテーブルに出力することができます。以下は、両方の機能をマージする試みです。私はタイプエラーTypeError: obj.list[i].forEach is not a function
で終わる。私はそれがオブジェクトであり、配列ではないので、オブジェクトを正しく解析することができませんでした。オブジェクトを正しく解析するために問題を修正するにはどうすればよいですか?オブジェクトの解析時にTypeErrorオブジェクトが関数ではありません
var obj = {
"list": [{
"name": "my Name",
"id": 12,
"type": "car owner"
},
{
"name": "my Name",
"id": 13,
"type": "car owner2"
},
{
"name": "my Name4",
"id": 14,
"type": "car owner3"
},
{
"name": "my Name4",
"id": 15,
"type": "car owner5"
}
]
};
var tableBody = "";
var columns = [];
// Create the header record.
tableBody = tableBody + "<tr>";
for (var prop in obj.list[0]) {
if (obj.list[0].hasOwnProperty(prop)) {
// Append properties such as myid, fname, lname etc.
tableBody = tableBody + ("<th>" + prop + "</th>");
// Also keep a list of columns, that can be used later to get column values from the 'data' object.
columns.push(prop);
}
}
tableBody = tableBody + "</tr>";
var results = [];
var searchField = "name";
var searchVal = "my Name";
for (var i = 0; i < obj.list.length; i++) {
// search term
if (obj.list[i][searchField] == searchVal) {
// Create the data rows.
// I get an error here:
obj.list[i].forEach(function(row) {
// Create a new row in the table for every element in the data array.
tableBody = tableBody + "<tr>";
columns.forEach(function(cell) {
// Cell is the property name of every column.
// row[cell] gives us the value of that cell.
tableBody = tableBody + "<td>" + row[cell] + "</td>";
});
tableBody = tableBody + "</tr>";
});
}
}
jQuery("#usersTable").append(tableBody);
<table border='1' id="usersTable"></table>
Working version based on feedback
'obj.list(I)' '[i]は' obj.listする必要があります:私はあなたのコードを修正しました。プロパティにアクセスするのではなく、今すぐ関数として呼び出しています – Pevara
訂正された構文で質問を更新しました。 – Astron
'obj.list [i] .forEach'で何を達成しようとしていますか? 'obj.list'はオブジェクトのリストであり、リストのリストではありません。 'var row = obj.list [i]'、多分? – Ryan