說我有objectA
這是一個數組裏面:[ { name: 'ObjectA'}, { name: 'ObjectB'}, { name: 'ObjectC' } ]
如何查找數組中另一個對象旁邊的對象?
我怎麼發現的旁邊ObjectA
(例如ObjectB
)的對象?
(我可以在香草的JavaScript或Lodash。)
說我有objectA
這是一個數組裏面:[ { name: 'ObjectA'}, { name: 'ObjectB'}, { name: 'ObjectC' } ]
如何查找數組中另一個對象旁邊的對象?
我怎麼發現的旁邊ObjectA
(例如ObjectB
)的對象?
(我可以在香草的JavaScript或Lodash。)
您可以使用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>
假設你想要的下一個對象,鑑於目前的對象的名字,試試這個。
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>
你可以找到(使用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);
試試這個
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);
試試這個:
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/
希望這有助於!
'array [INDEX_OF_objectA + 1]' – Rayon
這是否假設您所擁有的唯一變量是對'ObjectA'的引用?如果是這樣,我不認爲這是可能的,你也需要對數組的引用 – MiJyn
你需要首先找到它的一個值,或者你可以直接訪問數組中的項上述評論者稱? –