Estoy tratando de seleccionar algunos datos en un objeto que tiene una cadena _new adjunta.
Códigos y caja: https://codesandbox.io/s/vibrant-bardeen-77so1u?file=/src/components/Lodash.vue:0-353
Tengo algunos datos así:
data.json:
[ { "localSnameID": 18040, "isoGeoPoliticalEntry_FK": 959368, "isoLocalShortName_FK": 953, "shortNameID": 953, "adminLanguage2Char": "fa", "adminLanguage3Char": "fas", "name": "Afghānistān", "iso6393Char3Code": "fas", "P_precedingItem_FK": -1, "entryType": 0 }, { "localSnameID": 18312, "isoGeoPoliticalEntry_FK": 959368, "isoLocalShortName_FK": 977, "shortNameID": 977, "P_precedingItem_FK": 4, "entryType": 2, "name": "Afghānistān", "name_new": "AfghānistānXYZ", "iso6393Char3Code": "pus", "iso6393Char3Code_new": "eng", "adminLanguage2Char": "ps", "adminLanguage2Char_new": "en", "adminLanguage3Char": "pus", "adminLanguage3Char_new": "eng" } ]Usando lodash, pensé que haría algo como esto:
<template> <div>{{ newProperties }}</div> </template> <script> import { omitBy } from "lodash"; import data from "../assets/data.json"; export default { data() { return { localShortNames: data, }; }, computed: { newProperties() { return omitBy(this.localShortNames, (v, k) => k.endsWith("_new")); }, }, }; </script> El problema es que todavía se devuelve toda la matriz original de objetos. ¿Cómo puedo obtener una matriz de objetos que contengan la propiedad _new ? Si hay un mejor método lodash para usar en este caso, ¡avísame también!
Si te entendí correctamente, echa un vistazo al siguiente fragmento (sin lodash):
new Vue({ el: '#demo', data() { return { localShortNames: [ {"localSnameID": 18040, "isoGeoPoliticalEntry_FK": 959368, "isoLocalShortName_FK": 953, "shortNameID": 953, "adminLanguage2Char": "fa", "adminLanguage3Char": "fas", "name": "Afghānistān", "iso6393Char3Code": "fas", "P_precedingItem_FK": -1, "entryType": 0}, {"localSnameID": 18312, "isoGeoPoliticalEntry_FK": 959368, "isoLocalShortName_FK": 977, "shortNameID": 977, "P_precedingItem_FK": 4, "entryType": 2, "name": "Afghānistān", "name_new": "AfghānistānXYZ", "iso6393Char3Code": "pus", "iso6393Char3Code_new": "eng", "adminLanguage2Char": "ps", "adminLanguage2Char_new": "en", "adminLanguage3Char": "pus", "adminLanguage3Char_new": "eng"} ] } }, computed: { newProperties() { const res = [] this.localShortNames.forEach(v => { const u = {} for(const prop in v) { if(prop.endsWith("_new")) u[prop]= v[prop] } if(Object.keys(u).length !== 0) res.push(u) }) return res }, }, }) <script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script> <div id="demo"> <div>{{ newProperties }}</div> </div>