получить только тот объект из массива, у которого есть свойство true в реакции с машинописным текстом - PullRequest
0 голосов
/ 28 мая 2020

Я новичок в машинописи. здесь у меня есть массив объекта, который имеет несколько свойств,

let data = [{
  "Id": "1",
  "Test": true
}, {

  "Id": "2",
  "Test": true
},
{

  "Id": "1",
  "Test": true,
  "ShowAttribute": true
}];

// Here, I am trying to get the data 

const getConfig = (ShowAttribute) => {
  return <Array<prod>>config?.appConfig?.attributes?.data ?? []
}

// this is the structure here I have added only the final object which is data.

Теперь я пытаюсь

Я вызываю этот метод getConfig из двух мест, где я прохожу переменная, которая предоставит мне данные на основе ее значения.

поэтому, если переменная ложна, она должна вернуть все данные, которые я в настоящее время делаю в методе getConfig, и если это правда тогда он должен вернуть единственный объект, имеющий свойство ShowAttribute.

Итак, как я могу этого добиться?

1 Ответ

1 голос
/ 28 мая 2020

поэтому, если переменная имеет значение false, она должна возвращать все данные, которые я в настоящее время делаю в методе getConfig, а если это правда, то она должна возвращать единственный объект, имеющий свойство ShowAttribute.

Похоже, вы хотите ветвиться:

const getConfig = (ShowAttribute: boolean) => {
    if (ShowAttribute) {
        return data.filter(entry => "ShowAttribute" in entry);
        // Or if you mean the entry's `ShowAttribute` should be `true`:
        // return data.filter(({ShowAttribute}) => ShowAttribute);
    }
    return data; // Or maybe: `return data.slice()` if you want to make a defensive copy
};

... где data - это массив, который вы хотите использовать (я не мог сказать, какое настоящее имя из вашего кода; config?.appConfig?.attributes?.data?).


В комментарии, который вы спросили:

только одна вещь Как мне это добавить ?? для этого, если данных нет как. ан. пустой массив

Предполагая, что ваши данные поступают из config?.appConfig?.attributes?.data, вы бы сделали что-то вроде этого:

const getConfig = (ShowAttribute: boolean) => {
    const data = config?.appConfig?.attributes?.data ?? []; // <====
    if (ShowAttribute) {
        return data.filter(entry => "ShowAttribute" in entry);
        // Or if you mean the entry's `ShowAttribute` should be `true`:
        // return data.filter(({ShowAttribute}) => ShowAttribute);
    }
    return data; // Or maybe: `return data.slice()` if you want to make a defensive copy
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...