如何使用 JavaScript 或 jQuery 更改数组内的对象的值?

新手上路,请多包涵

下面的代码来自 jQuery UI 自动完成:

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"
    }
];

例如,我想更改 jquery-ui 的 desc 值。我怎样才能做到这一点?

另外,有没有更快的方法来获取数据?我的意思是给对象一个名称以获取其数据,就像数组中的对象一样?所以它会像 jquery-ui.jquery-ui.desc = ....

原文由 qinHaiXiang 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 541
2 个回答

您必须在数组中搜索,例如:

 function changeDesc( value, desc ) {
 for (var i in projects) {
 if (projects[i].value == value) {
 projects[i].desc = desc;
 break; //Stop this loop, we found it!
 }
 }
 }

并像使用它一样

var projects = [ ... ];
 changeDesc ( 'jquery-ui', 'new description' );

更新:

为了更快地获得它:

 var projects = {
 jqueryUi : {
 value: 'lol1',
 desc: 'lol2'
 }
 };

 projects.jqueryUi.desc = 'new string';

(根据 Frédéric 的评论,你不应该在对象键中使用连字符,或者你应该使用 “jquery-ui” 和 projects[“jquery-ui”] 表示法。)

原文由 Aston 发布,翻译遵循 CC BY-SA 3.0 许可协议

这很简单

  • 使用 findIndex 方法查找对象的索引。
  • 将索引存储在变量中。
  • 像这样做一个简单的更新: yourArray[indexThatyouFind]
 //Initailize array of objects.
let myArray = [
  {id: 0, name: "Jhon"},
  {id: 1, name: "Sara"},
  {id: 2, name: "Domnic"},
  {id: 3, name: "Bravo"}
],

//Find index of specific object using findIndex method.
objIndex = myArray.findIndex((obj => obj.id == 1));

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

//Update object's name property.
myArray[objIndex].name = "Laila"

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

原文由 Umair Ahmed 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题