Преобразовать вложенный массив в один массив

Оператор == проверяет, указывают ли две ссылки на один и тот же объект или нет. .equals() проверьте фактическое содержимое строки (значение).

Обратите внимание, что метод .equals() принадлежит классу Object (суперкласс всех классов). Вам необходимо переопределить его в соответствии с вашим требованием к классу, но для String оно уже реализовано и проверяет, имеет ли две строки одно и то же значение.

  • Случай 1
    String s1 = "Stack Overflow";
    String s2 = "Stack Overflow";
    s1 == s2;      //true
    s1.equals(s2); //true
    
    Причина: строка литералы, созданные без нуля, хранятся в пуле строк в области перментонов кучи. Таким образом, оба s1 и s2 указывают на один и тот же объект в пуле.
  • Случай 2
    String s1 = new String("Stack Overflow");
    String s2 = new String("Stack Overflow");
    s1 == s2;      //false
    s1.equals(s2); //true
    
    Причина. Если вы создаете объект String с использованием ключевого слова new, ему выделяется отдельное пространство в куче.
1
задан vikashbhorale 23 January 2019 в 09:34
поделиться

2 ответа

Используйте некоторую функцию формата:

function formatResponse(response) {
  return response.data.map((item) => {
    let district = item.districts[0];
    obj = {name: district.name};
    return Object.assign(obj, district.statistics[0]);
  });
}
0
ответ дан Roman Litvinov 23 January 2019 в 09:34
поделиться

Вы можете извлечь нужные свойства и собрать новые объекты для каждого уровня.

var response = { data: [{ districts: [{ id: 1, name: "sikkim district", statistics: [{ "food saftey": 2, "food ": 2, "air pollution": 0 }, { "food saftey": 5, "food ": 6, "air pollution": 7 }, { "food saftey": 7, "food ": 6, "air pollution": 0 }] }] }, { districts: [{ id: 2, name: "Bhojpur", statistics: [{ "food saftey": 1, "food ": 1, "air pollution": 1 }, { "food saftey": 5, "food ": 7, "air pollution": 6 }] }] }] };
		   
response.data = response.data.reduce((r, { districts }) =>
    districts.reduce((s, { name: district, statistics }) =>
        statistics.reduce((t, statistic) => [...t, { district, ...statistic }], s),
        r
    ),
    []
);

console.log(response.data);
.as-console-wrapper { max-height: 100% !important; top: 0; }

0
ответ дан Nina Scholz 23 January 2019 в 09:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: