Object.keys (items [0]) - Невозможно прочитать свойство '0' из неопределенного - PullRequest
0 голосов
/ 19 апреля 2020

Требуется помощь ( построено на христианском решении ), чтобы понять, почему я не могу передать переменную в функцию и чтобы она работала, когда в функции можно определить одну и ту же переменную (используя точно такой же вывод) и все работает.

Вот мой сценарий.

<script>
    function UpdateGrid(AppGrid) {

        var json1 = JSON.stringify({ 'griddata': AppGrid });
        console.log(json1);

        var json2 = {
            "griddata": [{
                "id": "2",
                "row": "2",
                "col": "1",
                "sizex": "1",
                "sizey": "1"
            },
            {
                "id": "1",
                "row": "1",
                "col": "1",
                "sizex": "3",
                "sizey": "1"
                }
            ]
        }

        const items = json1.griddata
        console.log("1");
        const replacer = (key, value) => value === null ? '' : value // specify how you want to handle null values here
        console.log("2");
        const header = Object.keys(items[0])
        console.log("3");

        let csv = items.map(row => header.map(fieldName => JSON.stringify(row[fieldName], replacer)).join(','))
        csv.unshift(header.join(','))
        csv = csv.join('\r\n')

        console.log(csv)
    }
</script>

Для справки, вот вывод в консоли AppGrid

{"griddata":[{"id":"2","row":"2","col":"1","sizex":"1","sizey":"1"},{"id":"1","row":"1","col":"1","sizex":"3","sizey":"1"}]}

Некоторые примечания. var json1 принимает некоторые данные JSON и выравнивание это в строку. Вывод этой строки я фактически скопировал и вставил для json2 (под ней). Я выводил на консоль json1, а также ряд других контрольных точек после каждого шага, поэтому я могу проследить, где он не работает.

Он не доходит до контрольной точки 3. Это означает, что он попадает на эту линию.

const header = Object.keys(items[0])

Ошибка в консоли заключается в следующем.

Uncaught TypeError: Невозможно прочитать свойство '0' из неопределенного

Если я изменяю постоянных элементов на json2.griddata тогда это работает отлично.

1 Ответ

0 голосов
/ 19 апреля 2020

@ Анураг указал на проблему в строке 1 моей функции, и решение для меня было удалить JSON .stringify. У меня также был этот формат, переданный этой функции, и я также удалил его там.

Декларация, которая работает, просто:

var json1 = AppGrid;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...