2015-09-24 2 views
1

Скажем, у меня есть набор данных, как это:найти товар на основе родного брата до или после

var nodes = [ 
    { 
    type: 'pants', 
    }, 
    { 
    type: 'glasses', 
    }, 
    { 
    type: 'jacket' 
    }, 
    { 
    type: 'pants' 
    } 
] 

Я ищу способ find (обратный элемент) и map (изменить пункт на месте) пункт, где type - pants, а предыдущий узел имеет type, равный jacket. Поэтому он должен возвращать (или изменять) последний элемент в этом массиве.

Есть ли способ сделать это в javascript? Являются ли их библиотеки доступными для этой функции?

+1

Я думаю, что это слишком странно имеют встроенный метод для. Просто зациклируйте массив 'length-1' раз, сравнивая' [i] .type с [i + 1] .type', измените '[i + 1]', если ваш случай встречен –

ответ

1

Простой для мог это сделать:

for (var i = 0; i < nodes.length - 1; i++) { 
 
    if (nodes[i + 1].type == "pants" && nodes[i].type == "jacket") { 
 
    // change or modify 
 
    } 
 
}

1

здесь функция, используя метод сокращения:

var nodes = [ 
 
    { 
 
    type: 'pants', 
 
    }, 
 
    { 
 
    type: 'glasses', 
 
    }, 
 
    { 
 
    type: 'jacket' 
 
    }, 
 
    { 
 
    type: 'pants' 
 
    } 
 
] 
 
function test(arr,el,bef){ 
 
    return arr.reduce(function(acc,a,i,arr){ 
 
     if(a.type==el && arr[i - 1] && arr[i-1].type==bef){ 
 
     acc.push(a); 
 
     } 
 
     return acc ; 
 
    },[]) 
 
} 
 
console.log(test(nodes,'pants','jacket'))

Смежные вопросы