659 Stimmen

Einen Wert in einem Array von Objekten in Javascript finden

Ich weiß, dass ähnliche Fragen schon einmal gestellt wurden, aber diese ist ein wenig anders. Ich habe ein Array von unbenannten Objekten, die ein Array von benannten Objekten enthalten, und ich muss das Objekt, wo "Name" ist "String 1" zu bekommen. Hier ist ein Beispiel-Array.

var array = [
    { name:"string 1", value:"this", other: "that" },
    { name:"string 2", value:"this", other: "that" }
];

Aktualisierung: Ich hätte das schon früher sagen sollen, aber sobald ich es gefunden habe, möchte ich es durch ein bearbeitetes Objekt ersetzen.

2voto

Ratheesh Punkte 601

Sie suchen nach einer allgemeinen Suche (Filter) über das Element in der Objektliste, ohne den Elementschlüssel anzugeben

Eingabe

var productList = [{category: 'Sporting Goods', price: '$49.99', stocked: true, name: 'Football'}, {category: 'Sporting Goods', price: '$9.99', stocked: true, name: 'Baseball'}, {category: 'Sporting Goods', price: '$29.99', stocked: false, name: 'Basketball'}, {category: 'Electronics', price: '$99.99', stocked: true, name: 'iPod Touch'}, {category: 'Electronics', price: '$399.99', stocked: false, name: 'iPhone 5'}, {category: 'Electronics', price: '$199.99', stocked: true, name: 'Nexus 7'}]
function customFilter(objList, text){
if(undefined === text || text === '' ) return objList;
return objList.filter(product => {
    let flag;
    for(let prop in product){
        flag = false;
        flag = product[prop].toString().indexOf(text) > -1;
        if(flag)
        break;
    }
return flag;
});}

Ausführen

customFilter(productList, '$9');

enter image description here

0voto

sucil Punkte 116

Wenn Sie jQuery verwenden, versuchen Sie $.grep().

http://api.jquery.com/jquery.grep/

0voto

George Eracleous Punkte 4089

Sie können verwenden Abfrage-Objekte von npm. Sie können ein Array von Objekten mit Filtern durchsuchen.

const queryable = require('query-objects');

const users = [
    {
      firstName: 'George',
      lastName: 'Eracleous',
      age: 28
    },
    {
      firstName: 'Erica',
      lastName: 'Archer',
      age: 50
    },
    {
      firstName: 'Leo',
      lastName: 'Andrews',
      age: 20
    }
];

const filters = [
    {
      field: 'age',
      value: 30,
      operator: 'lt'
    },
    {
      field: 'firstName',
      value: 'Erica',
      operator: 'equals'
    }
];

// Filter all users that are less than 30 years old AND their first name is Erica
const res = queryable(users).and(filters);

// Filter all users that are less than 30 years old OR their first name is Erica
const res = queryable(users).or(filters);

-1voto

function getValue(){
    for(var i = 0 ; i< array.length; i++){
        var obj = array[i];
        var arr = array["types"];
        for(var j = 0; j<arr.length;j++ ){
            if(arr[j] == "value"){
                return obj;
            }
        }

    }
}

-1voto

Christian Matthew Punkte 3393

Diese Antwort ist gut für Typescript / Angular 2, 4, 5+

Ich habe diese Antwort mit Hilfe der obigen Antwort von @rujmah erhalten. Seine Antwort bringt das Array count... und findet dann den Wert und ersetzt ihn durch einen anderen Wert...

Was diese Antwort tut, ist einfach packt den Array-Namen, die in einer anderen Variable über ein anderes Modul / Komponente festgelegt werden könnte... in diesem Fall das Array, das ich bauen hatte einen CSS-Namen von stay-dates. Also, was dies tut, ist extrahieren, dass der Name und dann ermöglicht es mir, um es in eine andere Variable und verwenden Sie es wie so. In meinem Fall war es eine HTML-CSS-Klasse.

let obj = this.highlightDays.find(x => x.css); let index = this.highlightDays.indexOf(obj); console.log('here we see what hightlightdays is ', obj.css); let dayCss = obj.css;

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X