【问题标题】:How to flatten an array of associated arrays in JS like can be done in PHP如何在 JS 中展平关联数组的数组,就像可以在 PHP 中完成一样
【发布时间】:2018-12-11 07:31:46
【问题描述】:

在我当前的场景中,我想从数组中删除索引号的级别。由于密钥不是固定的并且可能会不时更改,因此从长远来看会影响我的脚本。

我发现 code 使用 PHP 完成这项工作。但是在 JS 中怎么做呢?

PHP

$newArray = array();

foreach($value as $val) {
    $newArray = array_merge($new, $val);
}

JS

var newArray = [];

oldArray.forEach(function(entry){
    newArray = newArray.concat(entry);
});

PHP 示例数据和结果

array(3) {
[0]=>
   array(1) {
      ["name"]=>
      string(8) "John Doe"
   }
[1]=>
   array(1) {
      ["age"]=>
      string(2) "24"
   }
[2]=>
   array(1) {
      ["sex"]=>
      string(4) "male"
  }
}

对此

array(3) {
["name"]=>
      string(8) "John Doe"
["age"]=>
      string(2) "24"
["sex"]=>
      string(4) "male"
}

以上示例来自我也想在 JS 中实现的 PHP 输出。

使用我在js 中的代码,它不会删除数组的索引级别。我想删除数组的索引,以便获得一个普通对象,我可以在其中访问它的数据,如newArray['name'],而无需通过索引,因为它的排列是不可预测的。

如果您有任何澄清,请告诉我,因为我真的需要您的帮助。

【问题讨论】:

  • 你为什么不使用一个对象呢?使用该对象,您可以将键更改为您想要的任何内容,您可以通过这种方式访问​​它们:newArray['name']
  • @trincot 我为此提供了 PHP 代码,这是我在 php 端拥有的其他代码,并且与我还没有的 JS 情况有关。
  • @Stundji 谢谢老兄!我刚刚将我的数据转换为对象并做到了:) 这也是下面 trincot 的答案。
  • JS格式的样本数据缺失。我们必须根据 PHP 示例猜测它是什么。

标签: javascript arrays indexof


【解决方案1】:

如果您的数据类似于 PHP 示例数据,它将是一个普通对象数组,其中每个对象都有一个属性。

在这种情况下,使用带有扩展语法的Object.assign

const oldArray = [ {"age": 13}, {"length": 8} ];

const newArray = Object.assign({}, ...oldArray);

console.log(newArray);

【讨论】:

  • 谢谢@trincot。这也是我按照上面 Stundji 的建议所做的:)。
猜你喜欢
  • 2018-11-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-12
  • 2014-05-21
  • 2021-12-21
  • 2012-05-26
  • 1970-01-01
相关资源
最近更新 更多