你如何在JavaScript中更新对象的属性?

时间:2014-07-30 20:25:08

标签: javascript underscore.js lodash

如何在javascript中更新对象的属性?
我想将88917距离的“id”从8.8更新为4.5 ... 我可以访问lodash.js

[
      {
        "_id":68917,
        "Distance":8.81,
        "Lat":"42.65322175",
        "Lon":"-73.77398886"
      },
      {
        "_id":131277,
        "Distance":"9.86",
        "Lat":"42.654658",
        "Lon":"-73.805866"
      },
      {
        "_id":62450,
        "Distance":6.58,
        "Lat":"42.67457566",
        "Lon":"-73.74902171"
      }]

3 个答案:

答案 0 :(得分:5)

your_object[0].Distance = 4.5;

如果您事先不知道索引:

_.findWhere(your_object, {'_id': 68917}).Distance = 4.5;

答案 1 :(得分:1)

您提供的代码提供了一个数组。如果这代表您的代码,则可以使用for循环遍历数组中的对象:

如果将提供的代码分配给名为array的变量,则可以使用此代码迭代数组中的项。

一旦你这样做,你就可以使用点运算符访问里面对象的属性,找到并更新正确的项目。

function echo (text){
    document.getElementById("output").innerHTML += text + "<br/>"
}


var array = [
  {
    "_id":68917,
    "Distance":8.81,
    "Lat":"42.65322175",
    "Lon":"-73.77398886"
  },
  {
    "_id":131277,
    "Distance":"9.86",
    "Lat":"42.654658",
    "Lon":"-73.805866"
  },
  {
    "_id":62450,
    "Distance":6.58,
    "Lat":"42.67457566",
    "Lon":"-73.74902171"
  }];


echo("First item's distance " + array[0].Distance);

for(var i = 0; i < array.length;  i++){
    if(array[i]._id === 68917){
        echo("Found item "+array[i]._id);
        array[i].Distance = 4.45;
    }
}

echo("First item's distance " + array[0].Distance);

我创建了一个JS小提琴,演示了这个解决方案的工作原理; http://jsfiddle.net/gB5Nn/2/

答案 2 :(得分:1)

您可以使用内置的“过滤器”功能来获取所需的项目。

someObject.filter(function(item){return item._id === 68917;})[0].Distance = 4.5;

以下是一个例子:

http://jsfiddle.net/aVBx8/