If you run your code, it will first log arr[0] and then resolve Promise. Therefore, you may access that array's values in the next Promise. Something like this
var arr = new Array();  // <- this is by the way bad practice, use 'let arr = [];'
InputName.getAttribute("value")
         .then(function(value) {
            arr[0]=value;  // I would use arr.push(value)
         });
anotherInput.getAttribute("value")
         .then(function(value) {
            console.log(arr[0]); // your value should be accessible here
            arr.push(value) // push another value
         });
But, honestly, I've been working with Protractor fo a while now and I still have difficulties understanding promises... This why I'm using async/await in my tests so if I were to implement something like that I would end up having the following
let arr = [];
let value1 = await InputName.getAttribute("value");
arr.push(value1);
console.log(arr[0]);
Clear, neat code with no hustle. Plus protractor team is actually removing promise_manager, so one day when you update it your code will not work anymore. Then why not switch earlier