Javascript Array.push ({y: yValue, label: myLabel}) установка случайного значения ключа "x"

Я пытаюсь создать canvasJS, гистограммы JavaScript со следующими функциями:

    var dataPoints = [];
    var headers;
    var groups = [];
    var cityWide = 0;

    var chart = createChart();

    function createChart(title = "Hospitalized Count") {
        return new CanvasJS.Chart("chartContainer", {
            animationEnabled: true,
            
            title:{
                text:"Coronavirus Data in NYC Boroughs"
            },
            axisX:{
                interval: 1
            },
            axisY2:{
                interlacedColor: "rgba(1,77,101,.2)",
                gridColor: "rgba(1,77,101,.1)",
                title: "Total number of "+title
            },
            data: [{
                type: "bar",
                name: "companies",
                axisYType: "secondary",
                color: "#014D65",
                dataPoints: dataPoints
            }]
        });
    }

Я использую эту функцию ниже, чтобы установить массив dataPoints:

вызов функции: dataPoints = setDataPoints(4)

    function setDataPoints(value){
        let temp = [];
        for(var i = 0; i<groups.length;i++){
            if (groups[i][0] == "Citywide"){
                continue;
            }
            yValue = groups[i][value];
            myLabel = groups[i][0];
            
            console.info("y: "+ yValue);
            console.info("label: "+ myLabel);
            temp.push(
            {
                y: yValue, 
                label: myLabel
            });
        } 
        console.info(temp);
        return temp;

    }

Но когда я console.info (dataPoints), я получаю следующее:

[
    {"y": "136319","label": "Bronx","x": 0},
    {"y": "202778","label": "Brooklyn","x": 1},
    {"y": "97006","label": "Manhattan","x": 2},
    {"y": "202737","label": "Queens","x": 3},
    {"y": "54479","label": "StatenIsland","x": 4}
]

ожидаемый результат для dataPoints должен быть следующим:

[
        {y:136319, label: "Bronx" },
        {y:202778, label: "Brooklyn" },
        {y:97006, label: "Manhattan" },
        {y:202737, label: "Queens" },
        {y:54479, label: "StatenIsland" }|
]

Когда я пытался установить x

temp.push(
{
  x: "123",
  y: yValue, 
  label: myLabel
});

или удалите temp [i] ['x'], это не сработает.

Как вы могли заметить, значение x - это индексы массива, я понятия не имею, почему оно установлено и как мне его вообще удалить.

я пытался

dataPoints = temp;
console.info(dataPoints[0].hasOwnProperty('x'));

и возвращает false

Любая помощь будет признательна за это заранее!

ИЗМЕНИТЬ на основе комментария:

в цикле: console.info(temp[i]['x']) возвращает undefined

Если я добавлю в temp.push ({x: "123", ...}) console.info(temp[i]['x']) возвращает 123

console.info (temp [i]):

{y: "54479", label: "StatenIsland"}
label: "StatenIsland"
x: 4
y: "54479"
__proto__: Object
function.js:98

так что ... когда вы console.info(temp[i]["x"]), вы получаете?

ShanerM13 30.03.2021 00:51

К сожалению, удалил предыдущий комментарий, который был console.info (temp [i]) без X, обновил сообщение с результатами; console.info(temp[i]["x"] returns undefined

Brandon 30.03.2021 01:08

Следует ли доверять тому, что передается в вашу функцию ... то есть value выводится правильно?

ShanerM13 30.03.2021 01:26

да, в настоящее время установлено значение 4 в качестве заполнителя в другой функции, в которой функция вызывается.

Brandon 30.03.2021 01:31

Похоже, вы могли бы вынуть все, что ниже dataPoints = temp (поместить их после вызова функции для setDataPoints), и просто сразу вернуть temp вместо dataPoints.

ShanerM13 30.03.2021 01:34
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
5
44
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я не знаком с CanvasJS, но предполагаю, что он изменяет массив dataPoints, который вы даете ему, чтобы заполнить координату «x» на диаграмме. console.info не запускается синхронно, поэтому к тому времени, когда вы видите вывод, он уже изменен.

Если у вас console.info([...dataPoints]) или console.info([...temp]), держу пари, что x там не будет.

Согласно Документация по API для dataPoints.x:

If not provided, it will be set automatically set according to its index position on dataPoints Array.

Если вы хотите сохранить свою «чистую» копию dataPoints, вам необходимо передать копию массива на график [...dataPoints].

console.info ([... dataPoints]) или console.info ([... temp]) по-прежнему дает мне значение x = \, к сожалению, значение x не позволяет мне нарисовать диаграмму, надеялся найти способ избавиться от него, я немного отсылаюсь к документации (попробуйте проголосовать, если в документе есть решение)

Brandon 30.03.2021 01:35

Другие вопросы по теме