Самый простой способ сделать это - получить индекс поля данных. Имейте в виду, что вы можете получить индекс вне границ, если ваши поля не существуют.
const FIELDS = [ 'age', 'sex' ]; // Defined in data header?
const age = personRow.cells[FIELDS.indexOf('age')].innerText;
const sex = personRow.cells[FIELDS.indexOf('sex')].innerText;
Но вы должны избегать использования констант в глобальной области видимости. Вместо этого вы должны создать объект для хранения (области) этих значений. Таким образом, вы можете преобразовать свои данные в объект, доступный по ключам.
const FIELDS = [ 'age', 'sex' ];
var personRow = { 'cells' : [ 21, 'male' ] };
var data = {};
for (var i = 0; i < personRow.cells.length; i++) {
var field = FIELDS[i];
data[field] = personRow.cells[i];
}
console.log(JSON.stringify(data, null, 2));
.as-console-wrapper { top: 0; max-height: 100% !important; }
Вы можете создать такую функцию.
var personRow = { 'cells' : [ 21, 'male' ] };
var data = dataArrayToObject(personRow.cells, [ 'age', 'sex' ]);
console.log(JSON.stringify(data, null, 2));
/**
* Returns an object from the data array. If no fields are specified,
* the index of value will be used as the key.
*
* @param {object[]} data An array of values to assign to the given fields.
* @param {string[]} fields The iterable, object keys.
* @return Returns an array of key-value pairs specified by the indexed fields.
*/
function dataArrayToObject(data, fields) {
fields = fields || [];
return data.reduce((obj, val, i) => {
obj[i < fields.length ? fields[i] : i] = val;
return obj;
}, {})
}
.as-console-wrapper { top: 0; max-height: 100% !important; }