【问题标题】:Create an array of a single property extracted from an array of objects创建从对象数组中提取的单个属性的数组
【发布时间】:2018-07-12 21:55:38
【问题描述】:

我正在尝试将每个对象的属性从对象数组推送到另一个数组。

这是我的代码:

for (var i = 0; i < arr2.length; i++) {
  var dates = [];
  dates.push(arr2[i].date);
}
console.log(dates);

这是数据:

var arr2 = [{"id":"1","exchange_symbol":"TSE","currency":"JPY","stock_id":"1","stock_name":"KYOKUYO CO.,LTD.","stock_symbol":"1301.T","date":"2006-12-29","time":"15:00:00.000000","close":"2388.023438000000000000","volume":"23700.000000000000000000","active":"1","exchange_id":"0"},{"id":"2","exchange_symbol":"TSE","currency":"JPY","stock_id":"1","stock_name":"KYOKUYO CO.,LTD.","stock_symbol":"1301.T","date":"2007-01-04","time":"15:00:00.000000","close":"2416.452637000000000000","volume":"16500.000000000000000000","active":"1","exchange_id":"0"},{"id":"3","exchange_symbol":"TSE","currency":"JPY","stock_id":"1","stock_name":"KYOKUYO CO.,LTD.","stock_symbol":"1301.T","date":"2007-01-05","time":"15:00:00.000000","close":"2369.071045000000000000","volume":"45400.000000000000000000","active":"1","exchange_id":"0"},{"id":"4","exchange_symbol":"TSE","currency":"JPY","stock_id":"1","stock_name":"KYOKUYO CO.,LTD.","stock_symbol":"1301.T","date":"2007-01-09","time":"15:00:00.000000","close":"2388.023438000000000000","volume":"28800.000000000000000000","active":"1","exchange_id":"0"}];

我期待我的 console.log(dates) 看起来像这样:

"2006-12-29"
"2007-01-04"
"2007-01-05"
"2007-01-09"

但我明白了:

[Object {"id":"4","exchange_symbol":"TSE","currency":"JPY","stock_id":"1","stock_name":"KYOKUYO CO.,LTD.","stock_symbol":"1301.T","date":"2007-01-09","time":"15:00:00.000000","close":"2388.023438000000000000","volume":"28800.000000000000000000","active":"1","exchange_id":"0"}];

【问题讨论】:

    标签: javascript arrays object push


    【解决方案1】:

    您的代码有两个问题:

    1) 结果数组在循环的每次迭代中重新初始化

    2) 您需要专门访问源对象的 .date 属性(已在编辑中修改)

    var dates = [];
    
    for (var i = 0; i < arr2.length; i++) {
      dates.push(arr2[i].date);
    }
    
    console.log(dates);
    

    您还可以使用Array#map 将函数应用于数组中的每个元素并返回一个新元素:

    const dates = arr2.map(e => e.date);
    console.log(dates);
    

    【讨论】:

    • 是的,抱歉错字,我的原始代码中有 .date。但现在我得到以下信息:[未定义,未定义,未定义,未定义]
    • 这不是我的输出。您是否包含所有代码?检查此回复:repl.it/repls/BlankAgedProspect
    • 确实如此。谢谢。
    猜你喜欢
    • 2023-02-09
    • 1970-01-01
    • 2017-10-25
    • 2022-01-10
    相关资源
    最近更新 更多