【问题标题】:AngularJS objects in an array to new one [duplicate]数组中的AngularJS对象到新的[重复]
【发布时间】:2017-04-07 15:23:59
【问题描述】:
DashboardService.GetDateList($scope.datestart, $scope.dateend).then(function (response) {
    $scope.listdate = response.data;
});

我从上面的这个函数中得到一个数组列表

[{"day":1,"sql_date":"2017-04-01T00:00:00"},
{"day":2,"sql_date":"2017-04-02T00:00:00"},
{"day":3,"sql_date":"2017-04-03T00:00:00"},
{"day":4,"sql_date":"2017-04-04T00:00:00"},
{"day":5,"sql_date":"2017-04-05T00:00:00"}

如何将这个数组中的全天值推送到一个新数组中。

【问题讨论】:

  • 你检查我的答案了吗?

标签: javascript angularjs arrays object


【解决方案1】:

您可以使用Array#map 来获取每个day 键的value

var arr = [{"day":1,"sql_date":"2017-04-01T00:00:00"},{"day":2,"sql_date":"2017-04-02T00:00:00"},{"day":3,"sql_date":"2017-04-03T00:00:00"},{"day":4,"sql_date":"2017-04-04T00:00:00"},{"day":5,"sql_date":"2017-04-05T00:00:00"}],
    newArr = arr.map(v => v.day);
    
    console.log(newArr);

【讨论】:

  • DashboardService.GetDateList($scope.datestart, $scope.dateend).then(function (response) { $scope.listdate = response.data; }); => JSON
  • 我试试这个,但我得到的所有值都是 [object Object]
  • DashboardService.GetDateList($scope.datestart, $scope.dateend).then(function (response) { for (var i = 0; i < response.data.length; i++) { String(response.data[i]); console.log(String(response.data[i])); } });
  • @NguyenQuocDat 你修好了吗?
  • 谢谢,我修好了 :)
【解决方案2】:

您可以通过不同的方式实现这一目标:

  1. 使用 JavaScript for...in 循环。

    演示

var responseObj = [{"day":1,"sql_date":"2017-04-01T00:00:00"},
{"day":2,"sql_date":"2017-04-02T00:00:00"},
{"day":3,"sql_date":"2017-04-03T00:00:00"},
{"day":4,"sql_date":"2017-04-04T00:00:00"},
{"day":5,"sql_date":"2017-04-05T00:00:00"}];

var newArr = [];

for (var i in responseObj) {
    newArr.push({"day":responseObj[i].day});  
}

console.log(newArr);
  1. 使用Array map() 方法。

    演示

var responseObj = [{"day":1,"sql_date":"2017-04-01T00:00:00"},
{"day":2,"sql_date":"2017-04-02T00:00:00"},
{"day":3,"sql_date":"2017-04-03T00:00:00"},
{"day":4,"sql_date":"2017-04-04T00:00:00"},
{"day":5,"sql_date":"2017-04-05T00:00:00"}];

var newArr = responseObj.map(function(item) {
  return {"day":item.day};
});

console.log(newArr);
  1. 使用 JavaScript for 循环。

    演示

var responseObj = [{"day":1,"sql_date":"2017-04-01T00:00:00"},
{"day":2,"sql_date":"2017-04-02T00:00:00"},
{"day":3,"sql_date":"2017-04-03T00:00:00"},
{"day":4,"sql_date":"2017-04-04T00:00:00"},
{"day":5,"sql_date":"2017-04-05T00:00:00"}];

var newArr = [];

for (var i = 0; i < responseObj.length; i++) {
  newArr.push({"day": responseObj[i].day});
}

console.log(newArr);

【讨论】:

    【解决方案3】:

    您仍然可以使用 map 而不是 for 循环。请在下面找到代码sn-p

    var arr = [{"day":1,"sql_date":"2017-04-01T00:00:00"},{"day":2,"sql_date":"2017-04-02T00:00:00"},{"day":3,"sql_date":"2017-04-03T00:00:00"},{"day":4,"sql_date":"2017-04-04T00:00:00"},{"day":5,"sql_date":"2017-04-05T00:00:00"}],
    newArr = arr.map(function(obj) { return obj.day });
    
    console.log(newArr);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-01-23
      • 1970-01-01
      • 1970-01-01
      • 2017-10-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-12
      相关资源
      最近更新 更多