динамическое добавление состояния в массив стран в js

#javascript

#javascript

Вопрос:

 var countries = ['India', 'China', 'Malaysia'];

var states = ['Penang', 'Johor', 'KL']; // for Malaysia
  

Как я могу добавить состояния в связанный массив стран? Означает ли это, что массив country становится 2-мерным?

Комментарии:

1. ну, я не думаю, что массив двух измерений работает так, как вы думаете, они работают, я думаю, вы стремитесь к объекту, а не к массиву?

2. @Yusnee ИМО, ваш вопрос трудно понять. Неясно, о чем именно вы просите, хотя я рад, что кто-то понял это и сумел вам помочь. Не принимайте отрицательные голоса лично и не суетитесь по их поводу; они даны для текущего состояния вопроса, а не для человека, который его задал. Обычно для вопросов, которым, по-видимому, не хватает исследовательских усилий, возникает множество отрицательных отзывов.

Ответ №1:

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

 const countries = [{...}, {...}, {
    name: 'Malaysia',
    states: ['Penang', 'Johor', 'KL']
}, {...}];
  

Комментарии:

1. Хм … хорошо, я попробую сейчас

Ответ №2:

Вы могли бы использовать map() для изменения массива и создания Malaysia объекта с состояниями в качестве значения.

 var countries = ['India', 'China', 'Malaysia'];
var states = ['Penang', 'Johor', 'KL']; 

var result = countries.map(function(e) {
  if(e == 'Malaysia') {	
    e = {[e]: states}
  } else {
    e = {[e]: []}
  }
  return e;
})

console.log(result)  

Комментарии:

1. вы почти на месте. Но я думаю, что Индия и Китай также должны быть в скобках, но без содержимого массива. И возможно ли это с помощью push-массива?

2. Да, результат соответствует ожиданиям.