我從當前呈現的服務器端的表單構建一個對象。我收集下圖中顯示的所有複選框,並試圖按照每個步驟(1,2,3等)下的所有複選框是基於屬性parentNode
的單個對象進行排序。篩選輸入標記的dom對象
當前document.querySelectorAll('.checkboxes')
以下列格式獲取所有複選框。
var newObj = [
{
name: 'one',
parentNode: {
id: 'stepOne'
}
},
{
name: 'two',
parentNode: {
id: 'stepTwo'
}
},
{
name: 'three',
parentNode: {
id: 'stepOne'
}
},
]
新的對象應該是:
var newObj = {
stepOne: [
{
name: 'one',
parentNode: {
id: 'stepOne'
}
},
{
name: 'three',
parentNode: {
id: 'stepOne'
}
},
],
stepTwo: [
{
name: 'two',
parentNode: {
id: 'stepTwo'
}
},
]
}
通常我做這樣的事情:
let stepOne = function(step) {
return step.parentNode.getAttribute('id') === 'stepOne';
}
let stepTwo = function(step) {
return step.parentNode.getAttribute('id') === 'stepTwo';
}
let allTheStepOnes = fetchCheckBoxes.filter(stepOne);
但過濾器不DOM對象上工作,這似乎效率不高也是如此。
是否有通過newOrder對象的方式來循環?我需要遍歷結果並僅提取一些數據。 – AnAspiringCanadian
'newOrder'是一個匿名函數。您可以將其用作常規功能,例如'var myNewList = newOrder(newObj)'。然後你可以遍歷'myNewList' – user2340824