Отобразите оба массива и скопируйте результат в новый массив

Никто не сказал, что чистое решение xaml должно быть сложным. Вот простой, с 1 триггером данных в текстовом поле. Маржа и позиция по желанию

<Grid>
    <ComboBox x:Name="mybox" ItemsSource="{Binding}"/>
    <TextBlock Text="Select Something" IsHitTestVisible="False">
           <TextBlock.Style>
                <Style TargetType="TextBlock">
                      <Setter Property="Visibility" Value="Hidden"/>
                      <Style.Triggers>
                            <DataTrigger Binding="{Binding ElementName=mybox,Path=SelectedItem}" Value="{x:Null}">
                                  <Setter Property="Visibility" Value="Visible"/>
                             </DataTrigger>
                      </Style.Triggers>
                </Style>
           </TextBlock.Style>
     </TextBlock>
</Grid>
2
задан CodingisLife 7 March 2019 в 02:34
поделиться

3 ответа

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

var resultArray = array1.filter(function(arr) {
    return array2.indexOf(arr.id) !== -1;
}).map(function(item) {
    return {
        name: item.name
    };
});
0
ответ дан Brian Putt 7 March 2019 в 02:34
поделиться

Попробуйте:

array1 = [{"id": 1,"name": "aaa"},{"id": 2,"name": "bbb"},{"id": 5,"name": "ccc"},{"id": 6,"name": "ddd"},{"id": 8,"name": "eee"},{"id": 12,"name": "fff"}] ;

array2 = [ 5, 6, 8 ,12];

var result = array1.filter(item => array2.includes(item.id)).map(({id,name}) => ({name}));

console.log( result );

0
ответ дан Ehsan 7 March 2019 в 02:34
поделиться

Давайте сначала превратим array1 в объект, который отображает идентификаторы на соответствующие объекты:

var idMap = {}
array1.forEach(function(element) {
    idMap[element.id] = element
})

Затем вы можете получить желаемый результат, выполнив

var result = array2.map(function(id) {
    return idMap[id]
});
0
ответ дан Brian Putt 7 March 2019 в 02:34
поделиться
Другие вопросы по тегам:

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