我从当前呈现的服务器端的表单构建一个对象。我收集下图中显示的所有复选框,并试图按照每个步骤(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