Hi I have below array in my application. I want to make three lists on basis of this array.
[ 'type addPet {\n # default field\n empty: String\n}',
'type createUser {\n # default field\n empty: String\n}',
'type createUsersWithArrayInput {\n # default field\n empty: String\n}',
'type createUsersWithListInput {\n # default field\n empty: String\n}',
'type deleteOrder {\n # default field\n empty: String\n}',
'type deletePet {\n # default field\n empty: String\n}',
'type deleteUser {\n # default field\n empty: String\n}',
'type findPetsByStatus_items {\n id: String\n category: findPetsByStatus_items_category\n name: String\n photoUrls: [String]\n tags: [findPetsByStatus_items_tags_items]\n\n # pet status in the store\n status: String\n}',
'type findPetsByStatus_items_category {\n id: String\n name: String\n}',
'type findPetsByStatus_items_tags_items {\n id: String\n name: String\n}',
'type findPetsByTags_items {\n id: String\n category: findPetsByTags_items_category\n name: String\n photoUrls: [String]\n tags: [findPetsByTags_items_tags_items]\n\n # pet status in the store\n status: String\n}',
'type findPetsByTags_items_category {\n id: String\n name: String\n}',
'type findPetsByTags_items_tags_items {\n id: String\n name: String\n}',
'type getInventory {\n # default field\n empty: String\n}',
'type getOrderById {\n id: String\n petId: String\n quantity: Int\n shipDate: String\n\n # Order Status\n status: String\n complete: Boolean\n}',
'type getPetById {\n id: String\n category: getPetById_category\n name: String\n photoUrls: [String]\n tags: [getPetById_tags_items]\n\n # pet status in the store\n status: String\n}',
'type getPetById_category {\n id: String\n name: String\n}',
'type getPetById_tags_items {\n id: String\n name: String\n}',
'type getUserByName {\n id: String\n username: String\n firstName: String\n lastName: String\n email: String\n password: String\n phone: String\n\n # User Status\n userStatus: Int\n}',
'type loginUser {\n # default field\n empty: String\n}',
'type logoutUser {\n # default field\n empty: String\n}',
'type Mutation {\n addPet(body: param_addPet_body): addPet\n updatePet(body: param_updatePet_body): updatePet\n updatePetWithForm(petId: String, name: String, status: String): updatePetWithForm\n deletePet(api_key: String, petId: String): deletePet\n placeOrder(body: param_placeOrder_body): placeOrder\n\n # For valid response try integer IDs with positive integer value. Negative or non-integer values will generate API errors\n deleteOrder(orderId: String): deleteOrder\n\n # This can only be done by the logged in user.\n createUser(body: param_createUser_body): createUser\n createUsersWithArrayInput(body: param_createUsersWithArrayInput_body): createUsersWithArrayInput\n createUsersWithListInput(body: param_createUsersWithListInput_body): createUsersWithListInput\n\n # This can only be done by the logged in user.\n updateUser(username: String, body: param_updateUser_body): updateUser\n\n # This can only be done by the logged in user.\n deleteUser(username: String): deleteUser\n}',
'# Pet object that needs to be added to the store\ninput param_addPet_body {\n # default field\n empty: String\n}',
'# Created user object\ninput param_createUser_body {\n # default field\n empty: String\n}',
'# List of user object\ninput param_createUsersWithArrayInput_body {\n # default field\n empty: String\n}',
'# List of user object\ninput param_createUsersWithListInput_body {\n # default field\n empty: String\n}',
'# order placed for purchasing the pet\ninput param_placeOrder_body {\n # default field\n empty: String\n}',
'# Pet object that needs to be added to the store\ninput param_updatePet_body {\n # default field\n empty: String\n}',
'# Updated user object\ninput param_updateUser_body {\n # default field\n empty: String\n}',
'type placeOrder {\n id: String\n petId: String\n quantity: Int\n shipDate: String\n\n # Order Status\n status: String\n complete: Boolean\n}',
'type Query {\n viewer: viewer\n}',
'type updatePet {\n # default field\n empty: String\n}',
'type updatePetWithForm {\n # default field\n empty: String\n}',
'type updateUser {\n # default field\n empty: String\n}',
'type viewer {\n # Multiple status values can be provided with comma separated strings\n findPetsByStatus(status: [String]): [findPetsByStatus_items]\n\n # Muliple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing.\n findPetsByTags(tags: [String]): [findPetsByTags_items]\n\n # Returns a single pet\n getPetById(petId: String): getPetById\n\n # Returns a map of status codes to quantities\n getInventory: getInventory\n\n # For valid response try integer IDs with value >= 1 and <= 10. Other values will generated exceptions\n getOrderById(orderId: String): getOrderById\n loginUser(username: String, password: String): loginUser\n logoutUser: logoutUser\n getUserByName(username: String): getUserByName\n}' ]
In this array I want to make three lists. One list contains
type Mutation {\n addPet(body: param_addPet_body): addPet\n updatePet(body: param_updatePet_body): updatePet\n updatePetWithForm(petId: String, name: String, status: String): updatePetWithForm\n deletePet(api_key: String, petId: String): deletePet\n placeOrder(body: param_placeOrder_body): placeOrder\n\n # For valid response try integer IDs with positive integer value. Negative or non-integer values will generate API errors\n deleteOrder(orderId: String): deleteOrder\n\n # This can only be done by the logged in user.\n createUser(body: param_createUser_body): createUser\n createUsersWithArrayInput(body: param_createUsersWithArrayInput_body): createUsersWithArrayInput\n createUsersWithListInput(body: param_createUsersWithListInput_body): createUsersWithListInput\n\n # This can only be done by the logged in user.\n updateUser(username: String, body: param_updateUser_body): updateUser\n\n # This can only be done by the logged in user.\n deleteUser(username: String): deleteUser\n}
Second list contains
type viewer {\n # Multiple status values can be provided with comma separated strings\n findPetsByStatus(status: [String]): [findPetsByStatus_items]\n\n # Muliple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing.\n findPetsByTags(tags: [String]): [findPetsByTags_items]\n\n # Returns a single pet\n getPetById(petId: String): getPetById\n\n # Returns a map of status codes to quantities\n getInventory: getInventory\n\n # For valid response try integer IDs with value >= 1 and <= 10. Other values will generated exceptions\n getOrderById(orderId: String): getOrderById\n loginUser(username: String, password: String): loginUser\n logoutUser: logoutUser\n getUserByName(username: String): getUserByName\n}
and third list should contains exclude below items, should have rest of the items of the above array.
type Query {\n viewer: viewer\n}
type viewer {\n # Multiple status values can be provided with comma separated strings\n findPetsByStatus(status: [String]): [findPetsByStatus_items]\n\n # Muliple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing.\n findPetsByTags(tags: [String]): [findPetsByTags_items]\n\n # Returns a single pet\n getPetById(petId: String): getPetById\n\n # Returns a map of status codes to quantities\n getInventory: getInventory\n\n # For valid response try integer IDs with value >= 1 and <= 10. Other values will generated exceptions\n getOrderById(orderId: String): getOrderById\n loginUser(username: String, password: String): loginUser\n logoutUser: logoutUser\n getUserByName(username: String): getUserByName\n}
type Mutation {\n addPet(body: param_addPet_body): addPet\n updatePet(body: param_updatePet_body): updatePet\n updatePetWithForm(petId: String, name: String, status: String): updatePetWithForm\n deletePet(api_key: String, petId: String): deletePet\n placeOrder(body: param_placeOrder_body): placeOrder\n\n # For valid response try integer IDs with positive integer value. Negative or non-integer values will generate API errors\n deleteOrder(orderId: String): deleteOrder\n\n # This can only be done by the logged in user.\n createUser(body: param_createUser_body): createUser\n createUsersWithArrayInput(body: param_createUsersWithArrayInput_body): createUsersWithArrayInput\n createUsersWithListInput(body: param_createUsersWithListInput_body): createUsersWithListInput\n\n # This can only be done by the logged in user.\n updateUser(username: String, body: param_updateUser_body): updateUser\n\n # This can only be done by the logged in user.\n deleteUser(username: String): deleteUser\n}
Does anyone know how to do this in javascript ?
Use Array#reduce to iterate the array. Get the type string using regex. Get the relevant array from the Map r
, and push to the array. Return r
(the accumulator). When reduce is done, use Map#values and spread to get an array of arrays, and destructure to separate variables.
const data = ["type addPet {\\n # default field\\n empty: String\\n}","type createUser {\\n # default field\\n empty: String\\n}","type createUsersWithArrayInput {\\n # default field\\n empty: String\\n}","type createUsersWithListInput {\\n # default field\\n empty: String\\n}","type deleteOrder {\\n # default field\\n empty: String\\n}","type deletePet {\\n # default field\\n empty: String\\n}","type deleteUser {\\n # default field\\n empty: String\\n}","type findPetsByStatus_items {\\n id: String\\n category: findPetsByStatus_items_category\\n name: String\\n photoUrls: [String]\\n tags: [findPetsByStatus_items_tags_items]\\n\\n # pet status in the store\\n status: String\\n}","type findPetsByStatus_items_category {\\n id: String\\n name: String\\n}","type findPetsByStatus_items_tags_items {\\n id: String\\n name: String\\n}","type findPetsByTags_items {\\n id: String\\n category: findPetsByTags_items_category\\n name: String\\n photoUrls: [String]\\n tags: [findPetsByTags_items_tags_items]\\n\\n # pet status in the store\\n status: String\\n}","type findPetsByTags_items_category {\\n id: String\\n name: String\\n}","type findPetsByTags_items_tags_items {\\n id: String\\n name: String\\n}","type getInventory {\\n # default field\\n empty: String\\n}","type getOrderById {\\n id: String\\n petId: String\\n quantity: Int\\n shipDate: String\\n\\n # Order Status\\n status: String\\n complete: Boolean\\n}","type getPetById {\\n id: String\\n category: getPetById_category\\n name: String\\n photoUrls: [String]\\n tags: [getPetById_tags_items]\\n\\n # pet status in the store\\n status: String\\n}","type getPetById_category {\\n id: String\\n name: String\\n}","type getPetById_tags_items {\\n id: String\\n name: String\\n}","type getUserByName {\\n id: String\\n username: String\\n firstName: String\\n lastName: String\\n email: String\\n password: String\\n phone: String\\n\\n # User Status\\n userStatus: Int\\n}","type loginUser {\\n # default field\\n empty: String\\n}","type logoutUser {\\n # default field\\n empty: String\\n}","type Mutation {\\n addPet(body: param_addPet_body): addPet\\n updatePet(body: param_updatePet_body): updatePet\\n updatePetWithForm(petId: String, name: String, status: String): updatePetWithForm\\n deletePet(api_key: String, petId: String): deletePet\\n placeOrder(body: param_placeOrder_body): placeOrder\\n\\n # For valid response try integer IDs with positive integer value. Negative or non-integer values will generate API errors\\n deleteOrder(orderId: String): deleteOrder\\n\\n # This can only be done by the logged in user.\\n createUser(body: param_createUser_body): createUser\\n createUsersWithArrayInput(body: param_createUsersWithArrayInput_body): createUsersWithArrayInput\\n createUsersWithListInput(body: param_createUsersWithListInput_body): createUsersWithListInput\\n\\n # This can only be done by the logged in user.\\n updateUser(username: String, body: param_updateUser_body): updateUser\\n\\n # This can only be done by the logged in user.\\n deleteUser(username: String): deleteUser\\n}","# Pet object that needs to be added to the store\\ninput param_addPet_body {\\n # default field\\n empty: String\\n}","# Created user object\\ninput param_createUser_body {\\n # default field\\n empty: String\\n}","# List of user object\\ninput param_createUsersWithArrayInput_body {\\n # default field\\n empty: String\\n}","# List of user object\\ninput param_createUsersWithListInput_body {\\n # default field\\n empty: String\\n}","# order placed for purchasing the pet\\ninput param_placeOrder_body {\\n # default field\\n empty: String\\n}","# Pet object that needs to be added to the store\\ninput param_updatePet_body {\\n # default field\\n empty: String\\n}","# Updated user object\\ninput param_updateUser_body {\\n # default field\\n empty: String\\n}","type placeOrder {\\n id: String\\n petId: String\\n quantity: Int\\n shipDate: String\\n\\n # Order Status\\n status: String\\n complete: Boolean\\n}","type Query {\\n viewer: viewer\\n}","type updatePet {\\n # default field\\n empty: String\\n}","type updatePetWithForm {\\n # default field\\n empty: String\\n}","type updateUser {\\n # default field\\n empty: String\\n}","type viewer {\\n # Multiple status values can be provided with comma separated strings\\n findPetsByStatus(status: [String]): [findPetsByStatus_items]\\n\\n # Muliple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing.\\n findPetsByTags(tags: [String]): [findPetsByTags_items]\\n\\n # Returns a single pet\\n getPetById(petId: String): getPetById\\n\\n # Returns a map of status codes to quantities\\n getInventory: getInventory\\n\\n # For valid response try integer IDs with value >= 1 and <= 10. Other values will generated exceptions\\n getOrderById(orderId: String): getOrderById\\n loginUser(username: String, password: String): loginUser\\n logoutUser: logoutUser\\n getUserByName(username: String): getUserByName\\n}"]; const [arr1, arr2, arr3] = [...data.reduce((r, row) => { const [typeStr] = row.match(/^type\\s[^\\s]+/i) || []; const subArr = r.has(typeStr) ? r.get(typeStr) : r.get('other'); subArr.push(row); return r; }, new Map([['type Mutation', []], ['type viewer', []], ['other', []]])).values()]; console.log(arr1); console.log(arr2); console.log(arr3);
The code is trivial ... or I didn't get the request
const array = [...]
const list0 = [], list1 = [], list2 = []
for(const row of array) {
if(row.indexOf('type Mutation') === 0)
list0.push(row)
else if(row.indexOf('type viewer') === 0)
list1.push(row)
else if(row.indexOf('type Query') === -1)
list2.push(row)
}
If you are looking to do it by text content, you can use the array filter function from javascript, and match text occurence (case insensitive). This is a very basic example (not tested):
var list1 = GetMatchingEntries("type Mutation");
function GetMatchingEntries(matchingText){
return yourArray.filter(function(textEntry){
return textEntry.toUpperCase().indexOf(matchingText.toUpperCase()) !== -1;
});
}
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.