我試圖根據搜索條件解析下面的值,然後將結果打印到表中。我能夠正確解析所需的結果以控制檯或將所有結果打印到表格中。以下是我嘗試合併這兩個函數。我結束了一個類型錯誤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(我)'應該是'obj.list [I]'。你現在將它作爲函數調用,而不是訪問屬性 – Pevara
我用更正的語法更新了問題。 – Astron
你想用'obj.list [i] .forEach'完成什麼? 'obj.list'是對象列表,而不是列表列表。只是'var row = obj.list [i]',也許? – Ryan