Если у вас "arr" принимает массив объектов, а "spec" - свойство одного из объектов этого массива, то
проблем не должно возникать:
function ABC(arr, spec) {
for (i = 0; i < arr.length; i++) {
if (arr[i].hasOwnProperty(spec)) {
console.log(arr[i][spec]);
}
}
}
var arrOfObj = [{
prop1: 'prop 0.1',
prop2: 'prop 0.2'
}, {
prop1: 'prop 1.1',
prop2: 'prop 1.2'
}, {
prop1: 'prop 1.2',
prop2: 'prop 2.2'
}];
ABC(arrOfObj, 'prop1');
В ином случае, скорее всего, что не учитывается структура массива/объекта и т.д.
UPD Пример в песочницеfunction checkProp(o, s) {
for (var i = 0; i < s.length; i++) {
if ((Array.isArray(o) && typeof o[s[i]] === 'undefined') ||
(typeof o === 'object' && !o.hasOwnProperty(s[i]))) {
return false;
} else {
o = o[s[i]];
}
}
return o;
}
function ABC(arr, spec) {
var value;
for (var i = 0; i < arr.length; i++) {
if (value = checkProp(arr[i], spec)) {
console.log(value);
}
}
}
var arrOfObj = [{
prop1: [{
abc: 'ABC1'
}, {
def: [
100500, {
ghi: 'GHI1'
}
]
}],
prop2: 'prop 0.2'
},
{
prop1: [{
abc: 'ABC2'
}, {
def: [
100500, {
ghi: 'GHI2'
}
]
}],
prop2: 'prop 0.2'
}];
ABC(arrOfObj, ['prop1', 0, 'abc']); // ABC1, ABC2
ABC(arrOfObj, ['prop1', 1, 'def', 1, 'ghi']); // GHI1, GHI2