Алголия показывает значения массива с Javascript - PullRequest
0 голосов
/ 09 сентября 2018

Так что я использую мгновенный поиск Алголии и мне это нравится, но у меня есть одна проблема. Моя модель базы данных имеет полиморфную ассоциацию, где каждый tag хранится в массиве, и я хочу просто отобразить все теги в виде одной строки, но я не знаю, как это сделать. Я пытался получить tag_list.value, но это не сработало, а все остальное становится неопределенным.

<script>
var client = algoliasearch("xxxxx", "xxxx");
var index = client.initIndex('myname');
//initialize autocomplete on search input (ID selector must match)
autocomplete('#aa-search-input',
{ hint: false }, {
    source: autocomplete.sources.hits(index, {hitsPerPage: 25}),
    //value to be displayed in input control after user's suggestion selection
    displayKey: 'name',
    //hash of templates used when rendering dataset
    templates: {
        //'suggestion' templating function used to render a single suggestion
        suggestion: function(suggestion) {
          return '<span class="aa-highlight">' +
            suggestion._highlightResult.tag_list.value +
            suggestion._highlightResult.question.value + '</span><span>' +
            suggestion._highlightResult.answer_explanation.value + '</span>';
        }
    }
});
</script>

tag_list - это массив, но я не знаю, как получить доступ к массиву json в javascript, это то, что я спрашиваю. Я пытался .stringify и .arr [0], но они были неопределенными.

        suggestion._highlightResult.tag_list.value +

Это код / ​​строка кода, с которой у меня возникли проблемы.

1 Ответ

0 голосов
/ 10 сентября 2018

После комментария arieljuod будет полезно узнать, какой тип suggestion._highlightResult.tag_list.value возвращается. При этом, я надеюсь, что следующее поможет.

Массив в строку

В JavaScript вы можете преобразовать массив в строку, вызвав метод join для массива.

Примеры

Массив из одного элемента

var array = ["item 1"];
array.join(); // Output: "item 1"

Массив из нескольких предметов

var array = ["item 1", "item 2"];
array.join(); // Output: "item 1,item 2"

Пользовательский разделитель

По умолчанию метод join использует "," в качестве разделителя для каждого элемента в массиве. Если вы хотите использовать что-то другое, вы можете передать строку в функцию join:

var array = ["item 1", "item 2"];
array.join("/"); // Output: "item 1/item 2"

массив JSON в массив JavaScript

Я включаю это, потому что я не уверен, какой тип данных возвращается из suggestion._highlightResult.tag_list.value.

Если значение, возвращаемое из tag_list.value, является строкой, содержащей JSON (т. Е. "[\"item 1\", \"item 2\"]", тогда вы можете использовать JSON.parse() для преобразования его в массив JavaScript:

var json_string = "[\"item 1\", \"item 2\"]";
JSON.parse(json_string); // Output: ["item 1", "item 2"]
...