this will return the first matching object from the array of DeviceDetails where its DeviceInfo.box_number equals with string 46 (note that your values are stored as strings so check for strings)
afterwords i didnt understand the criteria to return the logical_area since logical_area is in the array LoadControlChannelList
It should look under LoadControlChannelList under the right Deviceinfo for "channel" (2) and then return Logical_area for the right LoadControlChannelList
I updated the function.
var box_number = 46;
var channel = 2; // LoadControlChannelList
//Search in DeviceDetails 0-26 for box_number 46
//It's found here:
//payload.DeviceDetails[3].DeviceInfo.box_number
//And then print the logical_area for the right DeviceDetails:
//msg.payload = msg.payload.DeviceDetails[3].LoadControlChannelList[2].logical_area
msg.payload = msg.payload.DeviceDetails.find(el => el.DeviceInfo.box_number === "46")
return msg;