【问题标题】:Is there an elegant way to get only one dimension from a two dimensional array in JavaScript or angularjs?有没有一种优雅的方法可以从 JavaScript 或 angularjs 中的二维数组中只获取一个维度?
【发布时间】:2018-09-11 12:23:12
【问题描述】:

有没有一种方法可以只获取数组的一维而不需要遍历整个数组来提取它们?

为了证明在本网站上提问之前我确实尝试过解决自己的问题,我尝试使用过滤器和循环来获取我需要的数据。我选择了我在下面输入的每个选项。

这是我的示例数据:

dataArray = 
 [ 
 {id: 'ABCDEF', name: 'ABC DEF'},
 {id:'WINDY', name: 'Windy' },
 {id: 'RSTETC', name: 'RST ETC'},
 {id: 'MCHSDXCVDEULH', name: 'MCHS DXCVD EULH'}
 ]

这是我为将所有名称值放入一个新数组所做的工作:

if (dataArray.length) {
 var nameList =[];
 angular.forEach(dataArray, function(dep, idx) {
   nameList.push(dep.name);
 });
}

【问题讨论】:

  • dataArray.map(e => e.name);?.. 名字是唯一的吗?如果是这样,您可以使用SetArray.from(new Set(dataArray.map(e => e.name)));

标签: javascript arrays angularjs multidimensional-array


【解决方案1】:

您可以使用.map()。来自Docs

map() 方法创建一个新数组,其结果是在调用数组中的每个元素上调用提供的函数。

let data = [ 
 {id: 'ABCDEF', name: 'ABC DEF'}, {id:'WINDY', name: 'Windy' },
 {id: 'RSTETC', name: 'RST ETC'}, {id: 'MCHSDXCVDEULH', name: 'MCHS DXCVD EULH'}
];

let result = data.map(({ name }) => name);

console.log(result);

【讨论】:

    【解决方案2】:

    您可以使用Array#map()。它创建一个新数组,其结果是在调用数组中的每个元素上调用提供的函数。

    dataArray = [ 
     {id: 'ABCDEF', name: 'ABC DEF'},
     {id:'WINDY', name: 'Windy' },
     {id: 'RSTETC', name: 'RST ETC'},
     {id: 'MCHSDXCVDEULH', name: 'MCHS DXCVD EULH'}
    ];
    
    console.log(
      dataArray.map(data => data.name)
    )

    但请注意,这仍然会在数组内部循环,没有办法解决。

    【讨论】:

      【解决方案3】:

      使用map 方法。 在你的情况下,它应该是这样的。

      dataArray = dataArray.map(data => data.name);

      【讨论】:

        【解决方案4】:

        Map 本来是这个问题的完美答案,但在我的特殊情况下,我们必须支持 IE 版本,所以这不是一个可行的选择。我必须保持我输入的代码,循环。 :(

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2021-08-14
          • 2015-05-14
          • 2019-08-15
          • 1970-01-01
          • 2021-01-09
          • 1970-01-01
          • 2017-11-07
          • 2011-01-03
          相关资源
          最近更新 更多