у меня есть 2 строки, которые мне нужно проверить в java-скрипте, если они симметричны
ряд 1 [2, 7, 9, 9, 7, 2] ряд 2 [5 7 3 3 7 5] как бы вы это сделали?
var r = [[5, 7, 3, 3, 7, 5], [2, 7, 9, 9, 7, 2]];
function isSymmetric(r) {
// convert to object
var rel = {}
for (var i = 0; i < r.length; i++) {
if (!(r[i][0] in rel)) rel[r[i][0]] = {};
rel[r[i][0]][r[i][1]] = true;
}
// Test to see if opposite relation is in object
for (var a in rel) {
for (var b in rel[a]) {
if (!rel[b] || !rel[b][a]) return false;
}
}
return true;
}
console.info(isSymmetric(r));
Грязный метод: isSymmetric = r => r.toString() === r.slice().reverse().toString()
пожалуйста, добавьте, что означает симметричный в этом контексте.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Используйте lodash.
var row = [2, 7, 9, 9, 7, 2];
var halves = _.chunk(row, _.ceil(row.length / 2));
var result = _.isEqual(halves[0], _.reverse(halves[1]));
Вы можете сделать что-то вроде этого:
let isSymmetric = arr => {
for(var i=0; i < arr.length; i++) {
if (arr[i] !== arr[arr.length - (i+1)])
return false
}
return true
}
console.info(isSymmetric([5, 7, 3, 3, 7, 5]))
console.info(isSymmetric([1, 7, 9, 9, 7, 2]))Идея состоит в том, чтобы пройтись по массиву и для каждого индекса сравнить его с его «сестрой» с правой стороны. Если кто-то не тот, они возвращаются false.
Вы можете начать с 0-го индекса и сравнить значение с его симметричной парой (length - 1 - i), и если они не совпадают, то return false. Вы должны остановиться на середине length / 2:
let values = [
[5, 7, 3, 3, 7, 5],
[2, 7, 9, 1, 9, 7, 2],
[5, 7, 3, 3, 7, 1]
];
function isSymmetric(arr) {
for (let i = 0; i < arr.length / 2; i++) {
if (arr[i] !== arr[arr.length - 1 - i]) {
return false;
}
}
return true;
}
values.forEach(v =>
console.info(isSymmetric(v))
);
как определить симметричность?