我正在构建一个对象数组。结构应该是这样的:
var array = [
{ 'keyword' : 'somekeyword',
'guidelines' : [ "guideline1", "guideline2", "guideline3"]
},
{ 'keyword' : 'anotherkeyword',
'guidelines' : [ "guideline1", "guideline2", "guideline3"]
}
]
相反,它是这样的:
var array = [
{ 'keyword' : 'somekeyword',
'guidelines' : [[ "guideline1", "guideline2", "guideline3"]]
},
{ 'keyword' : 'anotherkeyword',
'guidelines' : [[ "guideline1", "guideline2", "guideline3"]]
}
]
在构建我的对象以在指南数组上获得第二级嵌套时,我做错了什么?这是构建数组的函数,从HTML文件中的数据表读入:
$(html).find('tr').each(function() {
keywordObj = {};
guidelinesCell;
$(this).find('td').each(function() {
cellClass= $(this).attr('class');
if (cellClass === 's2') {
keywordObj.keyword = $(this).text();
} else if (cellClass === 's3' || cellClass == 's4') {
guidelinesCell = [];
guidelinesCell.push( $(this).html().split('<br>') );
//Possibly it's this push that's causing the problem?
keywordObj.guidelines = guidelinesCell;
console.log(guidelinesCell)
console.log(keywordObj.guidelines)
//At this point, the array is already nested- the console logs return eg
[Array[2]]
0: Array[2]
0: "GuidelineName1.pdf"
1: "GuidelineName2.pdf"
}
});
i ++;
if (keywordObj.guidelines && keywordObj.guidelines[0].length > 1) {
keywordsToLeitlinien.push(keywordObj);
}
});
作为参考,这里是它正在阅读的标记样本:
<tr dir="ltr">
<td class="hd">
<p style="height:39px;">.</p>
</td>
<td dir="ltr" class="s2">samplekeyword</td>
<td dir="ltr" class="s4">GuidelineName.pdf <br>GuidelineName.pdf</td>
</tr>
编辑添加:
这在我在此文件中的处理中不是问题,但我最终将此数组输出到JSON文件,我宁愿解决问题而不是继续解决此类输出:
{"keyword":"keywordname","guidelines":[["guidelineName1 ","guidelineName2"]]}
答案 0 :(得分:2)
因为split
在这里返回一个数组:
$(this).html().split('<br>')
由于你将这个数组推入另一个数组,它将嵌套。
相反,尝试类似:
guidelinesCell = $(this).html().split('<br>')
答案 1 :(得分:2)
这一行
guidelinesCell.push( $(this).html().split('<br>') );
.split
将返回一个数组,因此它与将数组推入另一个数组基本相同。
所以只需将guidelinesCell分配给split的结果
guidelinesCell = $(this).html().split('<br>');
答案 2 :(得分:0)
我认为push是问题,因为jQuery函数返回一个数组。尝试只推送第一个元素:
guidelinesCell.push( $(this).html().split('<br>')[0] );
//Possibly it's this push that's causing the problem?
答案 3 :(得分:0)