Движение по массиву с помощью другого массива.(решено) 
		
		
		
		Есть огромная проблема ! Не очень силен в JS но очень нужно сделать. 
	
var arr = {
        view:['or',['and',['value','status','=','1'],['value','type','=','1']],'condition2'],
        edit: ['value','status','=','1']
    };
var pos = ['view',0,2]
var new_arr = ['value','user','=','1'];
Смысл в следующем мне нужно имея ключи от массива arr которые хранятся в массиве pos перейти по этим ключам в массиве arr и поместить В возвращенную переменную массив new_arr заменив при этом старое. Как не пытался не могу придумать функцию. Помогите пожалуйсто. я так устал :cray:  | 
	
		
 
var arr = {
        view:['or',['and',['value','status','=','1'],['value','type','=','1']],'condition2'],
        edit: ['value','status','=','1']
    };
var pos = ['view',0,2]
var new_arr =arr
alert(new_arr[pos[0]])
Не понял что нужно помещать в new_arr[pos[0]]  | 
	
		
 Я так понял, нужно из свойства view объекта arr, взять нулевой элемент и 2-рой. 
	Т.е. 'or' и 'condition2'... Т.о. new_arr=['or', 'condition2']; :D  | 
	
		
 :-? Или нулевому присвоить 2 ( мну сначала подумал про это... потом стал сомневаться 
	 | 
	
		
 Так еще раз: ситуация сложная. 
	есть массив в котором храняться ключи другого массива. нужно пройти путь в одном массиве по ключам которые храняться в другом и после записать туда значение. main_arr = [[0,[0,1]],1] path_arr = [0,1,0] то есть нужно пройти путь по main_arr используя ключи из массива path_arr 1. main_arr -> ключ path_arr [0] // получаем [0,[0,1]] 2. main_arr -> ключ path_arr [1] // получаем [0,1] 3. main_arr -> ключ path_arr [2] // получаем 1 пока реализовал как полный дурак вот посмотрите межет поймете проблему: 
function update_temp_arr(arr){
        var p = temp_privileges_pos;
        switch (temp_privileges_pos.length) {
            case 1:
                temp_privileges[p[0]] = arr;
                break
            case 2:
                temp_privileges[p[0]][p[1]] = arr;
                break
            case 3:
                temp_privileges[p[0]][p[1]][p[2]] = arr;
                break
            case 4:
                temp_privileges[p[0]][p[1]][p[2]][p[3]] = arr;
                break
            case 5:
                temp_privileges[p[0]][p[1]][p[2]][p[3]][p[4]] = arr;
                break
            case 6:
                temp_privileges[p[0]][p[1]][p[2]][p[3]][p[4]][p[5]] = arr;
                break
            case 7:
                temp_privileges[p[0]][p[1]][p[2]][p[3]][p[4]][p[5]][p[6]] = arr;
                break
            case 8:
                temp_privileges[p[0]][p[1]][p[2]][p[3]][p[4]][p[5]][p[6]][p[7]] = arr;
                break
            case 9:
                temp_privileges[p[0]][p[1]][p[2]][p[3]][p[4]][p[5]][p[6]][p[7]][p[8]] = arr;
                break
        }
    }
 | 
	
		
 Цитата: 
	
 Цитата: 
	
 Вариант немного поумней... 
var ad = [[0,[0,1]],1];
var ai = [0,1,0];
var a=ad,i;
for (i=0; i<ai.length; i++) {
	a=a[ai[i]];
};
alert(a);
Там таки 0!  | 
	
		
 ksa, 
	Ахах в своих же объяснениях запутался сейчас попробую =) стоп а как теперь изменить получившийся 0 на свою переменную и получить полный массив?  | 
	
		
 dimast, 
	Cначало копируем старый объект в новый - затем крутимся в новом и чистим - меняем(ключи то те же  | 
	
		
 Спасибо конечно Deff, но мне нужен пример =( 
	 | 
	
		
 dimast, 
	:cray: 
var main_arr = [[0,[0,100]],1];
var path_arr = [0,1,1];
function x(e, d, f) {
    for (var c = [], b = e, a = 0; a < d.length; a++) c[a] = b, b = b[d[a]];
    if (3 == arguments.length) {
        b = f;
        for (a = c.length - 1; - 1 < a; a--) c[a][d[a]] = b, b = c[a]
    }
    return b
};
alert(x(main_arr,path_arr))
alert(x(main_arr,path_arr,25))
alert(main_arr)
alert(x(main_arr,path_arr,"test"))
alert(main_arr)
 | 
| Часовой пояс GMT +3, время: 03:40. |