Javascript ES6: получить конкретный массив из массива JSON и итерировать их, используя карту - PullRequest
0 голосов
/ 03 июля 2018

У меня есть JSON на https://api.myjson.com/bins/9jyq4

"response": [{
    "id": "1",
    "title": "Star Wars",
    "project": [
      "Star Wars Proj1",
      "Star Wars Proj2",
      "Star Wars Proj3",
      "Star Wars Proj4"
    ]
  },
  {
    "id": "2",
    "title": "Back to the Future",
    "project": [
      "Back to the Future Proj1",
      "Back to the Future Proj2",
      "Back to the Future Proj3",
      "Back to the Future Proj4"
    ]
  },
  ..
  ..

У меня есть два сборщика. «Заголовок» и «Проекты» Я заполняю средство выбора заголовков, используя.

<Picker
  mode="dialog"
  selectedValue={this.state.Movietitle}
  onValueChange={(itemValue, itemIndex) => 
  this.setState({ Movietitle: itemValue });
  }
  enabled={!this.state.inRide}
  >
  { 
    this.state.responseData.map((item) => (
    <Picker.Item label={item.title} value={item.id} key={item.id} />))
  }
</Picker>

Так что теперь я хочу заполнить второй сборщик "Проекты", используя выбор, выбранный из первого сборщика. Просто нужна помощь в создании запроса к карте. Спасибо

Ответы [ 2 ]

0 голосов
/ 03 июля 2018

Вы должны иметь возможность получить доступ к каждому названию проекта с помощью find, используя текущий выбранный элемент ответа и просто отображая каждый элемент в свойстве project этого элемента ответа.

Как это:

render() {
    const { responseData, Movietitle, selectedProject } = this.state;
    const selectedMovie = responseData.find(item => item.id === Movietitle);

    return (
        <Picker
            mode="dialog"
            selectedValue={selectedProject}
            onValueChange={project => this.setState({ selectedProject: project })}
        >
            { 
                selectedMovie.project.map((project, projectIndex) => (
                    <Picker.Item label={project} value={project} key={`${Movietitle}-${projectIndex}`} />
                ))
            }
        </Picker>
    );
}
0 голосов
/ 03 июля 2018

Используйте метод filter, чтобы получить массив tan объекта, которому соответствует идентификатор, затем используйте метод map для него

let response = [{
    "id": "1",
    "title": "Star Wars",
    "project": [
      "Star Wars Proj1",
      "Star Wars Proj2",
      "Star Wars Proj3",
      "Star Wars Proj4"
    ]
  },
  {
    "id": "2",
    "title": "Back to the Future",
    "project": [
      "Back to the Future Proj1",
      "Back to the Future Proj2",
      "Back to the Future Proj3",
      "Back to the Future Proj4"
    ]
  }
]

function getObject(srchId) {
  let __obj = response.filter(function(item) {
    return item.id === srchId;


  })
  return __obj;
}

getObject('2').map(function(item) {

  //rest of the code
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...