【问题标题】:swaping value in arrays交换数组中的值
【发布时间】:2015-09-17 22:48:48
【问题描述】:

假设我有类似的数组

var x = [{
      value: 10,
      age: 20,
  }, {
      value: 9,
      age: 19,
  }, {
      value: 8,
      age: 18,
  }];

我怎样才能改变数组看起来像这样

  var x = [{
      value: 11,
      age: 21,
  }, {
      value: 10,
      age: 20,
  }, {
      value: 9,
      age: 19,
  }];

以最有效的方式无需手动重写值?基本上是增加第一个值,然后将下一个索引元素的值更改为前一个值?基本上

var g=[1st value,2nd value,3rd value] => [incremented first value,first value,second value]

【问题讨论】:

  • Array.prototype.unshift + Array.prototype.pop
  • x.unshift((function(){ var y = x.pop(); y.value = x[0].value+1; y.age = x[0].age+1; return y; })());

标签: javascript arrays


【解决方案1】:

试试这个。

var x = [{
        value: 10,
        age: 20,
    }, {
        value: 9,
        age: 19,
    }, {
        value: 8,
        age: 18,
    }];
var newX = x.map(function (obj){
    var newObj = {};

    var newValue = obj.value + 1;
    var newAge = obj.age + 1;
    newObj["value"] = newValue;
    newObj["age"] = newAge;
    return newObj;
})
console.log(newX);

【讨论】:

  • 如果它不只是 +1 增量怎么办?如果我只想增加数组中的第一个元素,然后希望第二个元素在增加之前与第一个元素相等,依此类推
【解决方案2】:

一个简单的for loop 足以解决您的问题,并且根据this 也是更有效的方法之一。 (绝对比$.eachArray.prototype.forEach 更高效)

for (var i = 0; i < x.length; i++) {
    x[i].value += 1;
    x[i].age += 1;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-05-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-14
    • 1970-01-01
    相关资源
    最近更新 更多