Отображать массив объектов без скобок, но элементы, включая запятые, должны оставаться - PullRequest
0 голосов
/ 04 января 2019

Итак, у меня большой пердит мозг. Я пытаюсь завершить тестовую спецификацию, и требуемый вывод должен выглядеть так:

{"clojure": {"end": [10, 7], "start": [10, 1]}, "java": {"end": [11, 5], "start": [11, 2]}}

У меня есть массив, в который я динамически добавляю объекты. Вот код, который заполняет массив:

function findHorizontal(word, grid){
let test = [];
    for(let i = 0; i < grid.length; i++){
        for(let j = 0; j < word.length; j++){
            if (grid[i].includes(word[j])){
                let row = grid.indexOf(grid[i]) + 1
                let firstLetter = grid[i].indexOf(word[j][0]) + 1
                let lastLetter = grid[i].lastIndexOf(word[j].split("")[word[j].split("").length - 1]) + 1
                    test.push({[word[j]]: {
                        start: [row, firstLetter],
                        end: [row, lastLetter]
                    }
                })
            }
        }
    }
    return test
}

А вот как выглядит тест:

[{"clojure": {"end": [10, 7], "start": [10, 1]}}, {"java": {"end": [11, 5], "start": [11, 2]}}]

Как видите, единственное различие между приведенным выше выводом и выводом тестовой спецификации - это скобки из массива.

Мне нужно снять скобки, отобразить объекты и ввести запятые. Зацикливание тестового массива просто возвращает последний объект, и если я попытаюсь получить объекты VIA из другого массива или переменной, я снова окажусь в той же лодке?

Что мне здесь не хватает?

РЕДАКТИРОВАТЬ: Вот точные спецификации испытаний.

Ответы [ 2 ]

0 голосов
/ 04 января 2019

Вы можете получить содержимое массива в виде строки, подобной этой: JSON.stringify(array), а затем убрать открывающие и закрывающие скобки. Array.toString() не будет работать, потому что это не будет распечатывать вложенные объекты, поэтому вам нужно JSON.stringify.

Однако, если вы не можете быть уверены, что открывающая и закрывающая скобки будут первыми символами, и не хотите использовать регулярные выражения, это может привести к путанице.

Вы можете сделать это с помощью функции Reduce, которая будет собирать элементы в массиве в строку без скобок:

const result = array.reduce((acc,crnt) => {
    return acc ? acc = `${acc},${JSON.stringify(crnt)}` : `${JSON.stringify(crnt)}`
},'');
0 голосов
/ 04 января 2019

Вам нужен объект в качестве цели.

let test = {};

// later inside of the inner loop
test[word[j]] = { start: [row, firstLetter], end: [row, lastLetter] };
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...