> вот тебе контр пример:
https://github.com/devote/QSA/blob/master/qsa.js
какой пиздец.. и где там _необходимо_ модифицировать итерируемый массив?
вот пример более грамотной архитектуры для выборки по селектору
function jpath( path ){ // jpath 3a1
var cache= jpath.cache
var result= cache[ path ]
if( result ) return result
var types= jpath.types
var processors= []
path.replace
( /([.])([^.\s]*)/g
, function( str, type, name ){
processors.unshift( types[ type ]( name ) )
}
)
return cache[ path ]= function( ){
var list= [].slice.call( arguments )
for( var i= processors.length; --i >= 0 && list.length ; ){
list= processors[ i ]( list )
}
return list
}
}
jpath.cache= {}
jpath.types= {}
jpath.types[ '.' ]= function( name ){
if( !name ) return function( list ){
var result= []
list.forEach( function( value ){
for( var name in value ){
var val= value[ name ]
if( val == null ) continue
result.push( val )
}
})
return result
}
return function( list ){
if( list.length === 1 ){
value= list[ 0 ]
if( value == null ) return []
return[ value[ name ] ]
}
var result= []
list.forEach( function( value ){
var val= value[ name ]
if( val == null ) return
result.push( val )
})
return result
}
}
console.log( jpath( '. .a .length' )( [ 123, { a: "12" }, 0 ] ) )
> хотя то как ты тут общаешься, боюсь программирование в JS на более низком уровне, для тебя темный лес... Что же поделаешь, судьба всех джукверистов.
да тут куда не плюнь попадёшь в какого-нибудь низкоуровневого специалиста