javascript - 如何将对象的对象数组转换为一维数组?

标签 javascript jquery arrays datatables

我有一个对象内有对象的javascript数组的示例。所以我基本上只想将其放入一维数组中。

我在 SO 上搜索了很多问题,但没有一个符合我的要求。

我有什么

[
{
"id": "59cf758f7bdf8d2e0c1c68c7",
"value": {
  "city": "Mahbubnagar",
  "state": "Andhra Pradesh",
  "country": "India"
}
},
{
"id": "59cf758f7bdf8d2e0c1c68c8",
"value": {
  "city": "Udgir",
  "state": "Maharashtra",
  "country": "India"
}
},
{
"id": "59cf758f7bdf8d2e0c1c68c9",
"value": {
  "city": "Umarga",
  "state": "Maharashtra",
  "country": "India"
}
},
{
"id": "59cf758f7bdf8d2e0c1c68ca",
"value": {
  "city": "Umarkhed",
  "state": "Maharashtra",
  "country": "India"
}
},
{
"id": "59cf758f7bdf8d2e0c1c68cb",
"value": {
  "city": "Umred",
  "state": "Maharashtra",
  "country": "India"
}
}
]

我只是想把这个对象数组放入一个数组中

[
  "59cf758f7bdf8d2e0c1c68c7",
  "Mahbubnagar",
  "Andhra Pradesh",
  "India",
],[
  "59cf758f7bdf8d2e0c1c68c9",
  "Umarga",
  "Maharashtra",
  "India",
],[
  "59cf758f7bdf8d2e0c1c68ca",
  "Umarkhed",
  "Maharashtra",
  "India",
],[
  "59cf758f7bdf8d2e0c1c68c7",
  "Mahbubnagar",
  "Andhra Pradesh",
  "India",
],

对象数组可以有更多的子对象,换句话说,你可以说它的动态内容。

到目前为止我用过的是

var object= property.value.elements;
        var finalArray = object.map(function (obj) {
          return obj.id;
        });
        console.log(finalArray);

这只给我 ID 列表

这不是重复的问题,请在将其标记为重复之前进行验证。

最佳答案

您可以检查对象的值是否是一个对象,并采用扁平值作为结果。

function flat(object) {
    return Object
        .values(object)
        .reduce((r, v) => r.concat(v && typeof v === 'object' ? flat(v) : v), []);
}

var array = [{ id: "59cf758f7bdf8d2e0c1c68c7", value: { city: "Mahbubnagar", state: "Andhra Pradesh", country: "India" } }, { id: "59cf758f7bdf8d2e0c1c68c8", value: { city: "Udgir", state: "Maharashtra", country: "India" } }, { id: "59cf758f7bdf8d2e0c1c68c9", value: { city: "Umarga", state: "Maharashtra", country: "India" } }, { id: "59cf758f7bdf8d2e0c1c68ca", value: { city: "Umarkhed", state: "Maharashtra", country: "India" } }, { id: "59cf758f7bdf8d2e0c1c68cb", value: { city: "Umred", state: "Maharashtra", country: "India" } }],
    result = array.map(flat);

console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }

关于javascript - 如何将对象的对象数组转换为一维数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50410657/

相关文章:

javascript - HighCharts:摆脱工具提示但保持十字准线

javascript - 为公共(public)共享保存值状态(添加到 URL)

javascript - 无法读取 null 的属性 'load'

javascript - 只选择一个元素 .wrapper 或 .test

php - 字段名称验证添加 with for with jquery 验证

arrays - 如何使用 Vector 与父 Haxe 类实例的偏移量?

C++ 程序显然打印内存地址而不是数组

javascript - 使用复选框选择项目 Angular JS

javascript - 使用类选择器的 jQuery 拖放

ios - 转换此代码时我哪里出错了,因此它不会将变量放入数组中?