2016-03-04 114 views
0

說我有objectA這是一個數組裏面:[ { name: 'ObjectA'}, { name: 'ObjectB'}, { name: 'ObjectC' } ]如何查找數組中另一個對象旁邊的對象?

我怎麼發現的旁邊ObjectA(例如ObjectB)的對象?

(我可以在香草的JavaScript或Lodash。)

+0

'array [INDEX_OF_objectA + 1]' – Rayon

+0

這是否假設您所擁有的唯一變量是對'ObjectA'的引用?如果是這樣,我不認爲這是可能的,你也需要對數組的引用 – MiJyn

+0

你需要首先找到它的一個值,或者你可以直接訪問數組中的項上述評論者稱? –

回答

1

您可以使用Array.prototype.reduce()

var arr = [{ 
 
    name: 'ObjectA' 
 
}, { 
 
    name: 'ObjectB' 
 
}, { 
 
    name: 'ObjectC' 
 
}]; 
 

 
var nxt = arr.reduce(function(a, b){ 
 
    return (a.name === 'ObjectA') ? b : a; 
 
}); 
 

 
document.querySelector('pre').innerHTML = JSON.stringify(nxt, 0 , 4);
<pre></pre>

+1

乾淨,清脆。 –

+0

嘗試給「ObjectB」它將返回「ObjectA」,而不是「ObjectC」 – Siva

+0

是的,這就是我返回':a'這是以前的值。 – Jai

0

假設你想要的下一個對象,鑑於目前的對象的名字,試試這個。

var getNextObject = function(arr,name){ 
 
    var currIndex = - 1; 
 
    arr.forEach((i,index)=>{ 
 
    if(i.name === name){ 
 
     currIndex = index; 
 
    }; 
 
    }); 
 
    if(currIndex < (arr.length - 1 && currIndex >=0)){ 
 
     return arr[currIndex+1]; 
 
    } 
 
    //return null if its the last element or the object with such name does not exist in the array 
 
    return null; 
 
} 
 

 

 
var arr = [ { name: 'ObjectA'}, { name: 'ObjectB'}, { name: 'ObjectC' } ]; 
 

 

 
//Most of the code from here on is for demonstration purposes 
 
// 
 
// This function call is good enough ==> getNextObject(arr,'ObjectA'); 
 
// 
 

 
var nextOfObjectA = getNextObject(arr,'ObjectA'); 
 
var myprea = document.getElementById('newprea'); 
 

 
if(nextOfObjectA && nextOfObjectA.name){ 
 
    myprea.innerHTML = nextOfObjectA.name; 
 
}else{ 
 
    myprea.innerHTML = 'does not exist'; 
 
} 
 

 
var nextOfObjectC = getNextObject(arr,'ObjectC'); 
 
var myprec = document.getElementById('newprec'); 
 

 

 
//Object C is the last element, hence the function returns null 
 
if(nextOfObjectC && nextOfObjectC.name){ 
 
    myprec.innerHTML = nextOfObjectC.name; 
 
}else{ 
 
    myprec.innerHTML = 'does not exist'; 
 
}
<br/> 
 
<p> Next Object for objectA = <span id="newprea"></span> </p> 
 

 
<br/> 
 
<p> Next Object for objectC = <span id="newprec"></span> </p>

0

你可以找到(使用findIndex)對象的索引,然後拿到一個項目。

var objArr = [ { name: 'ObjectA'}, { name: 'ObjectB'}, { name: 'ObjectC' } ]; 
 

 
var nextObj = objArr[objArr.findIndex(function(item, index) { return item.name == this;}, 'ObjectA')+1]; 
 

 
alert(JSON.stringify(nextObj)); 
 

 
console.log(nextObj);

0

試試這個

var arr = [ { name: 'ObjectA'}, { name: 'ObjectB'}, { name: 'ObjectC' } ]; 
var objIndex = -1; 
arr.forEach(function(value, index){ if (value.name == "ObjectA"){ objIndex = index + 1; } }); 
console.log(arr[objIndex].name); 
0

試試這個:

function getNextOrDefault (name){ 
//Fetch index of item. 
var index = _.findIndex(ary,function(item){ 
          return item.name === name; 
          }); 
//If item found (!==-1) and has next item (item's index + 1 > length of array) 
return (index !== -1 ? index++ : index) > ary.length || index === -1 
     //Return default 
     ? null 
     //Return next item 
     : ary[index] ; 
} 

的jsfiddle:https://jsfiddle.net/k4dgnzpf/

希望這有助於!

相關問題