Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   ЧаВО - часто задаваемые вопросы (faq) (https://javascript.ru/forum/misc/9459-chavo-chasto-zadavaemye-voprosy-faq.html)

tenshi 22.11.2012 22:57

так и запишем - проблему высосал из пальца)

tenshi 22.11.2012 23:02

for( var item= $i( items ); item.next(); ){
    item.owner().push( 'foo' ) // добавили элемент в список
    item.owner( item.owner().concat([ 'foo', 'bar' ]) ) // добавили список в список
    item.key( item.key() - 1 ) ) // сдвинули указатель на предыдущий элемент
    // и ушли в бесконечный цикл)
}

FINoM 22.11.2012 23:02

У меня не настолько уж проблемные пальцы. А тебе просто советую побольше поработать, а потом брать дядек на айда с примерами в студии. Есть тут у нас еще один Якубович, Ливандериамариумом зовется, тоже любитель "покажи да докажи".

FINoM 22.11.2012 23:04

Цитата:

Сообщение от tenshi
...
item.owner().push( 'foo' ) // добавили элемент в список
...

Фу фу фу, бросай ты эту затею.

tenshi 22.11.2012 23:13

ещё один спесивый юнец) тоже из яндекса?

devote 23.11.2012 01:42

Цитата:

Сообщение от tenshi
контрпример в студию)

Цитата:

Сообщение от tenshi
так и запишем - проблему высосал из пальца)

Цитата:

Сообщение от tenshi
ещё один спесивый юнец) тоже из яндекса?

вот тебе контр пример: https://github.com/devote/QSA/blob/master/qsa.js хотя то как ты тут общаешься, боюсь программирование в JS на более низком уровне, для тебя темный лес... Что же поделаешь, судьба всех джукверистов.

tenshi 23.11.2012 18:11

> вот тебе контр пример: 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 на более низком уровне, для тебя темный лес... Что же поделаешь, судьба всех джукверистов.

да тут куда не плюнь попадёшь в какого-нибудь низкоуровневого специалиста :lol:

devote 23.11.2012 20:26

Цитата:

Сообщение от tenshi
вот пример более грамотной архитектуры для выборки по селектору

я вижу лишь говнокод

tenshi 23.11.2012 20:51

Цитата:

Сообщение от devote (Сообщение 217505)
я вижу лишь говнокод

по каким признакам ты учуял тут говнокод?

melky 23.11.2012 23:10

Цитата:

Сообщение от tenshi
46 var result= []
47 list.forEach( function( value ){
48 var val= value[ name ]
49 if( val == null ) return
50 result.push( val )
51 })
52 return result
53 }

return list.filter(function (val) {
    return !!val[name];
});


Часовой пояс GMT +3, время: 23:14.