nastya97core,
<!DOCTYPE html>
<html>
<head>
<title>Untitled</title>
<meta charset="utf-8">
</head>
<body>
<table>
<tr>
<td>id</td>
<td>Стоимость</td>
<td>Инфо</td>
<td>Статус</td>
</tr>
<tr class="test">
<td>a1</td>
<td>123</td>
<td><input type="text" value="перезвонить"></td>
<td><select name="select">
<option value="value1" selected>В обработке</option>
<option value="value2">Завершен</option>
<option value="value3">Невозможен</option>
</select></td>
</tr>
<tr class="test">
<td>a2</td>
<td>1413</td>
<td><input type="text"></td>
<td><select name="select">
<option value="value1">В обработке</option>
<option value="value2" selected>Завершен</option>
<option value="value3">Невозможен</option>
</select></td>
</tr>
<tr class="test">
<td>a3</td>
<td>222</td>
<td><input type="text"></td>
<td><select name="select">
<option value="value1" selected>В обработке</option>
<option value="value2">Завершен</option>
<option value="value3">Невозможен</option>
</select></td>
</tr>
</table>
<button>Сохранить</button>
<pre id="out"></pre>
<script>
const getData = _ => [...document.querySelectorAll('.test')].map(({ cells }) => {
let [id, price, info, status] = [...cells].map(({
textContent,
children
}) => children.length ? children[0].value : textContent);
return {
id,
info,
status
}
});
let currentArr = getData();
document.querySelector('button').addEventListener('click', _ => {
let arr = getData();
arr = arr.filter((obj, i) => {
let el = currentArr[i],
test;
['info', 'status'].forEach(k => obj[k] === el[k] ? delete obj[k] : (test = true))
return test
})
out.innerHTML = JSON.stringify(arr, "", 1)
})
</script>
</body>
</html>