Javascript,循环遍历数组并应用其他功能

时间:2016-06-28 11:53:30

标签: javascript arrays

我有Geocoder.coordinates("25 Main St, Cooperstown, NY") array

objects

我只获得没有var out = [{ "type": "1", "from": "13052033555", "to": "4444444", "amount": "40000", "date": 1461575799, "status": "1" }, { "type": "2", "from": "13052033555", "to": "1111111", "amount": "30000", "date": 1461575884, "status": "1" }... ];

的值

现在我用这个函数从这个数组中获取值, 我传递数组然后只返回没有键的值

keys

然后它返回没有这样的键的值数据,

function foo(a) {
  var values = [];
  for (var i = 0; i < a.length; i++) {
    var obj = a[i];
    var arr = Object.keys(obj).map(function(k) {
      return obj[k]
    });
    values.push("[" + arr + "],");
  }
  return values.join('');
}

我的问题是如何循环使用值并仅将方法应用于每个数据数组的第5个值?

2 个答案:

答案 0 :(得分:1)

foo所要做的就是在fn上致电arr[4],然后再继续循环播放。

arr[4] = fn(arr[4])

这当然是假设您无需出于某种原因不需要这样做。如果是这种情况,您可以像原始代码一样使用另一个for loop,并按照上面的说明修改每个数组中的第5个元素,除非它看起来更像

for (var i = 0; i < outerArray.length; i++) {
  outerArray[i][4] = fn(outerArray[i][4])
}

既然我们已经介绍了如何使用您当前的代码,我还建议您不要为任何真实的应用程序执行此操作。如果要修改特定对象属性上的数据以获取对象列表,则应使用对象属性名称(键),而不是稍后使用索引对值数组执行此操作。这可以防止由于对象没有保证订单而引起的任何混淆。以下是我将如何执行此操作的示例,假设您要修改date

function foo(a) {
  return a.map(function(obj) {
    return Object.keys(obj).map(function(k) {
      return k === 'date' ? fn(obj[k]) : obj[k]
    })
  })
}

这样您可以定位所需的属性,但也不要修改原始对象。

注意您应该将fn替换为所需的功能:)

修改根据您的请求,您可以通过以下方式对其进行扩展以检查其他属性名称

function foo(a) {
  return a.map(function(obj) {
    var values = []
    Object.keys(obj).forEach(function(k) {
      if (k === 'date') {
        values.push(fn(obj[k]))
      } else if (k !== 'type') {
        values.push(obj[k])
      }
    })

    return values
  })
}

答案 1 :(得分:0)

var out = [{
    "type": "1",
    "from": "13052033555",
    "to": "4444444",
    "amount": "40000",
    "date": 1461575799,
    "status": "1"
  }, {
    "type": "2",
    "from": "13052033555",
    "to": "1111111",
    "amount": "30000",
    "date": 1461575884,
    "status": "1"
  }
];

function foo(a) {
  var values = [];
  for (var i = 0; i < a.length; i++) {
    var obj = a[i];
    var arr = Object.keys(obj).map(function(k) {
      return obj[k]
    });
    values.push("[" + arr + "],");
  }
  return values.join('');
}

function myFn(elem){
  console.log(elem);
  return elem;
}

var arr = foo(out);
arr = JSON.parse("["+arr.substring(0,arr.length-1)+"]")

arr.forEach(function(elem){
  return myFn(elem[4]);
});
console.log(arr);