从对象获取键/值,执行函数并在

时间:2016-10-31 21:46:41

标签: javascript jquery arrays

我从后端获得[{id:'test', time: '1223'}, {id: 'test2', time: '2323'}],我需要为所有人检索时间值,执行一个函数并以[{id:'test', time: 'new value for test'}, {id: 'test2', time: 'new value for test2'}]

的形式发送回对象

所以我决定尝试使用for loop提取时间值并推送到数组中,但我的for loop缺少某些内容

var objext = [{id:'test', time: 'blah'}, {id: 'test2', time: 'blah'}];
  var dataArray = new Array;
  for (var id  in  objext) {
    dataArray.push(objext[id]);
  };

它显然与我不知道如何选择time密钥一样返回。

然后我会为每个人运行我的功能,这样做效果很好:

var time = [23,34,56];
  var map = time.map(function(num) {
    if (num === 23) {
      return num +2;
    } else {
      return num;
    };
  });

然后最后一部分将放回去,我认为我可以得到一个idtime之一的数组,然后再一起插入但是我的代码到目前为止,一次只能映射一个数组:

var data = ["Drake","Ola","d"],
    result = data.map(function (a) { return { id: a }; });

我尝试过使用数组:

var data = ["Drake","Ola","d"];
var hht = [21,34,56];
result = [data,hht].map(function (a,b) { return { id: a, time:b }; });

它没有正确映射。 有什么想法吗?

4 个答案:

答案 0 :(得分:2)

您可以使用.map()回调

执行所有任务
var objtext = [{id:'test', time: '1223'}, {id: 'test2', time: '2323'}];
objtext = objtext.map(function(obj) {
  var time = obj.time; 
  // do stuff with `obj.time`
  if (time == 1223) {
    time += 2;
    obj.time = time;
  }
  if (time == 2323) {
    time -= 2;
    obj.time = time;
  }
  return obj
});

创建仅包含time属性的数组

var times = objtext.map(function({time}) {return time});

答案 1 :(得分:1)

您可以使用数组,迭代它并使用其他部分以及新对象。



var data = ["Drake", "Ola", "d"],
    hht = [21, 34, 56],
    result = data.map(function (a, i) { 
        return { id: a, time: hht[i] };
    });

console.log(result);




答案 2 :(得分:0)

您可以映射对象数组并使用Object.assign返回不同的时间:

var objs = [
    {id: 'Drake', time: 'blah'}, 
    {id: 'Ola',   time: 'blah'}, 
    {id: 'd',     time: 'eh'  }];
var hht = [21, 34, 56];

objs = objs.map( (obj, i) => Object.assign({}, obj, { time: hht[i] }) );

console.log(objs);

答案 3 :(得分:0)

使用for循环尝试此操作。



var res = [{
    id: 'test',
    time: '1223'
  }, {
    id: 'test2',
    time: '2323'
  }, {
    id: 'test3',
    time: '2453'
  }],
  hht = [21, 34, 56];
for (var i = 0; i < res.length; i++) {
  res[i]["time"] = +res[i]["time"] + hht[i]; 
  //or use if statements 
  //if(+res[i]["time"] === 23)res[i]["time"] = +res[i]["time"] + hht[i];
 
  //scenario will be 
 //res[0]["time"] = 1223 + 21
 //res[1]["time"] = 2323 + 34
 //res[2]["time"] = 2453 + 56
}
console.log(res);
&#13;
&#13;
&#13;