444 Stimmen

Wie ändert man den Wert eines Objekts, das sich innerhalb eines Arrays befindet, mit JavaScript oder jQuery?

Der folgende Code stammt aus jQuery UI Autocomplete:

var projects = [
    {
        value: "jquery",
        label: "jQuery",
        desc: "the write less, do more, JavaScript library",
        icon: "jquery_32x32.png"
    },
    {
        value: "jquery-ui",
        label: "jQuery UI",
        desc: "the official user interface library for jQuery",
        icon: "jqueryui_32x32.png"
    },
    {
        value: "sizzlejs",
        label: "Sizzle JS",
        desc: "a pure-JavaScript CSS selector engine",
        icon: "sizzlejs_32x32.png"
    }
];

Ich möchte zum Beispiel die desc Wert von jquery-ui . Wie kann ich das tun?

Gibt es außerdem eine schnellere Möglichkeit, die Daten zu erhalten? Ich meine, geben Sie dem Objekt einen Namen, um seine Daten zu holen, genau wie das Objekt innerhalb eines Arrays? Es wäre also etwas wie jquery-ui.jquery-ui.desc = ....

4voto

gandharv garg Punkte 801

Sie können die Funktion map --

const answers = this.state.answers.map(answer => {
  if(answer.id === id) return { id: id, value: e.target.value }
  return answer
})

this.setState({ answers: answers })

4voto

keroles Monsef Punkte 498

Versuchen Sie es mit forEach(item,index) Hilfskraft

var projects = [
    {
        value: "jquery",
        label: "jQuery",
        desc: "the write less, do more, JavaScript library",
        icon: "jquery_32x32.png"
    },
    {
        value: "jquery-ui",
        label: "jQuery UI",
        desc: "the official user interface library for jQuery",
        icon: "jqueryui_32x32.png"
    },
    {
        value: "sizzlejs",
        label: "Sizzle JS",
        desc: "a pure-JavaScript CSS selector engine",
        icon: "sizzlejs_32x32.png"
    }
];

let search_to_change = 'jquery'

projects.forEach((item,index)=>{
   if(item.value == search_to_change )
      projects[index].desc = 'your description ' 
})

4voto

Leo Lanese Punkte 431
// using higher-order functions to avoiding mutation
var projects = [
            {
                value: "jquery",
                label: "jQuery",
                desc: "the write less, do more, JavaScript library",
                icon: "jquery_32x32.png"
            },
            {
                value: "jquery-ui",
                label: "jQuery UI",
                desc: "the official user interface library for jQuery",
                icon: "jqueryui_32x32.png"
            },
            {
                value: "sizzlejs",
                label: "Sizzle JS",
                desc: "a pure-JavaScript CSS selector engine",
                icon: "sizzlejs_32x32.png"
            }
        ];

// using higher-order functions to avoiding mutation
index = projects.findIndex(x => x.value === 'jquery-ui');
[... projects.slice(0,index), {'x': 'xxxx'}, ...projects.slice(index + 1, projects.length)];

3voto

MD SHAYON Punkte 6992

Methode:1

Sie können for each, for-Schleife für das verwenden

const projects = [
    {
        value: "jquery",
        label: "jQuery",
        desc: "the write less, do more, JavaScript library",
        icon: "jquery_32x32.png"
    },
    {
        value: "jquery-ui",
        label: "jQuery UI",
        desc: "the official user interface library for jQuery",
        icon: "jqueryui_32x32.png"
    },
    {
        value: "sizzlejs",
        label: "Sizzle JS",
        desc: "a pure-JavaScript CSS selector engine",
        icon: "sizzlejs_32x32.png"
    }
];

for (let project of projects){
    if(project.value === "jquery-ui"){
         project.desc = "change value of desc of jquery-ui"
    }
}

console.log(projects)

Verfahren: 2

Karte verwenden

const newProject = projects.map((project, index)=>{
     if(project.value === "jquery-ui"){
           project.desc = "change value of desc of jquery-ui"
     }
});

console.log(newProject)

Methode: 3

//Find index of specific object using findIndex method.    
objIndex = projects.findIndex((obj => obj.value ===  "jquery-ui"));

//Log object to Console.
console.log("Before update: ", myArray[objIndex])

//Update object's name property.
projects[objIndex].desc = "change value of desc of jquery-ui"

2voto

Deathstalker Punkte 718

Hier ist eine schöne, übersichtliche Antwort. Ich war mir nicht 100%ig sicher, ob das funktionieren würde, aber es scheint zu klappen. Bitte lassen Sie mich wissen, wenn eine lib ist für diese erforderlich, aber ich glaube nicht, eine ist. Auch wenn dies nicht in x Browser funktioniert, lassen Sie mich bitte wissen. Ich habe versucht, diese in Chrome IE11 und Edge schienen sie alle gut zu funktionieren.

    var Students = [
        { ID: 1, FName: "Ajay", LName: "Test1", Age: 20},
        { ID: 2, FName: "Jack", LName: "Test2", Age: 21},
        { ID: 3, FName: "John", LName: "Test3", age: 22},
        { ID: 4, FName: "Steve", LName: "Test4", Age: 22}
    ]

    Students.forEach(function (Student) {
        if (Student.LName == 'Test1') {
            Student.LName = 'Smith'
        }
        if (Student.LName == 'Test2') {
            Student.LName = 'Black'
        }
    });

    Students.forEach(function (Student) {
        document.write(Student.FName + " " + Student.LName + "<BR>");
    });

Die Ausgabe sollte wie folgt aussehen

Ajay Smith

Jack Black

John Test3

Steve Test4

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