2014-03-04 30 views
-2

創建JSON對象非常簡單。不知道問題在哪裏。
試圖建立一個JSON對象是這樣的:
Javascript數組:類型錯誤:無法讀取undefine的屬性

var result = [ 
      {"member":"member1", "person":"person1"}, 
      {"member":"member2", "person":"person2"} 
]; 

下面是代碼:

$ = cheerio.load('<table><tbody><tr><td>message1</td><td>person1</td></tr><tr><td>message2</td><td>person2</td></tr><tr><td>message3</td><td>person3</td></tr></tbody></table>'); 
var result = {}; 
$('tr').each(function(i, row){ 
    result[i].message.push($(this).find('td').eq(0).text()); 
    result[i].person.push($(this).find('td').eq(1).text()); 
}); 

錯誤: TypeError: Cannot read property 'message' of undefined

+1

您聲明'VAR的結果= {};',然後嘗試訪問鍵(用'i'),但它有沒有.. .so'result [i]'將永遠是'undefined'。 'undefined'沒有「message」屬性 – Ian

+0

'var result = {}'是一個空對象。 – zzzzBov

+0

顯然'result [0]'是未定義的。 (如果你在你的問題中使用代碼,這是真的。) –

回答

1
var cheerio = require("cheerio"); 

$ = cheerio.load('<table><tbody><tr><td>message1</td><td>person1</td></tr><tr><td>message2</td><td>person2</td></tr><tr><td>message3</td><td>person3</td></tr></tbody></table>'); 
var result = []; 
$('tr').each(function(i, row){ 

    result[i] = { 
     message: $(this).find('td').eq(0).text(), 
     person: $(this).find('td').eq(1).text() 
    }; 

}); 

console.log (result); 

結果:

[ { message: 'message1', person: 'person1' }, 
    { message: 'message2', person: 'person2' }, 
    { message: 'message3', person: 'person3' } ] 
+0

這不是我所期望的。爲什麼在屬性值周圍有'[]'? –

+0

不知道爲什麼你需要一個消息/人的數組。你也可以這樣做:'result [i] .message = $(this).find('td')。eq(0).text(); (1).text(); result:[{message:'message1',person:'person1'}, {message :'message2',person:'person2'}, {message:'message3',person:'person3'}]' – null

+0

已更新我的回答 – null

0

這就是我一直在尋找:

var result = new Array(); 
$('tr').each(function(i, row){ 

    var ele = { 
     message: $(this).find('td').eq(0).text(), 
     person: $(this).find('td').eq(1).text() 
    }; 
    console.log(ele); 
    result.push(ele); 
}); 

console.log(result); 
相關問題