1. 程式人生 > >JavaScript對巢狀陣列做扁平化處理

JavaScript對巢狀陣列做扁平化處理

function flatten(array){
    var result = [];
	var toStr = Object.prototype.toString;
    for(var i=0;i<array.length;i++){
		var element = array[i];
        if(toStr.call(element) === "[object Array]"){
            result = result.concat(flatten(element));
        }
        else{
            result.push(element);
        }
    }
    return result;
}

這個實現沒有使用ES較高版本的API,所以可以相容低版本瀏覽器。

如果不考慮相容,可以使用ES5中陣列的reduce方法來替代迴圈。

還可以使用陣列的isArray方法來判斷是否為陣列。

以此達到簡短程式碼的目的。

相關推薦

JavaScript陣列扁平處理

function flatten(array){ var result = []; var toStr = Object.prototype.toString; for(var i=

逆序——淺談一維樹陣列 & 離散

計算逆序對問題    BZOJ    1266 目錄 前言 正文 普通做法 歸併排序 樹狀陣列 陣列離散化 STL+二分離散化 樹狀陣列求逆序對 前言 也許有許多大佬看到這個標題,就會心生嘲笑,畢竟只是一個小

Gson Map 型別的序列與反序列

Gson 對 Map<String, Object>  巢狀型別的序列化與反序列化 gson 簡介: Gson is a Java library that can be used to convert Java Objects into its JSON re

[Javascript Practice] 陣列扁平處理

可用方法 <script type="text/javascript"> var array=[1,[3,[4],[5,[6,7]],8],[9,[10]]]; var newarray=[]; function flat(ar

洛谷P1908 逆序 - 樹數組 - 離散

nbsp 更新 get == can 逆序對 nod string 對應關系 一種離散化方法,把序列的離散化地只保留相對大小 sort(a+1, a+n+1, cmp); for(int i=1; i<=n; i++) { if(i ==

陣列學習9——使用vector二維陣列進行初始的理解

這個題目不難,但是這裡涉及了二維陣列的基礎知識,值得記錄。 什麼時候對二維陣列必須初始化:在使用push_back的時候Push的不是一個數組(而是一個元素)的時候。 因為這個時候你知道怎麼分割槽!!所有的元素都是一股腦堆在一起。 *******************

codeforces 869E. The Untended Antiquity(二維樹陣列,隨機)

E. The Untended Antiquity time limit per test2 seconds memory limit per test512 megabytes inputstandard input outputstandard

Mongodb陣列操作$(update)、$佔位符更新陣列文件集合

一、更新陣列中的值 看如下students文件中的資料: db.students.insert({_id:NumberInt(1),grades:[NumberInt(80),NumberInt(85),NumberInt(90)]}) db.students.inser

mongodb update多層陣列解決辦法

version: 3.4.3 { "_id" : 1 "user_id": 1, "message" : "Yes" "translations" : [ { "destination" : "fr", "text

Flatten Nested Arrays(展平陣列

這個題目是在一個公司現場面談的時候的一個題目。雖然對這種找工作上來就做題目的現象比較反感。 但是大環境如此,也只能被蹂躪了。 中文描述 題目要求比較簡單:[1,2,[3],[[4]],5,6] -> [1,2,3,4,5,6] 就是陣列中

MongoDB學習筆記~官方驅動陣列物件的更新

回到目錄 對於陣列物件mongodb本身是支援的,不過對於陣列的更新,mongodb的Csharp驅動目前只支援一級,即你的物件裡包含陣列,而陣列又包括陣列,這表示兩層,這在更新子陣列時,Csharp驅動是不支援的,今天要說的就是如何讓它支援子陣列的更新,下面是我給出的資料結構 在Mongodb的Cs

[email protected]註解型別的校驗

@Valid註解可以實現資料的驗證,你可以定義實體,在實體的屬性上新增校驗規則,而在API接收資料時新增@valid關鍵字,這時你的實體將會開啟一個校驗的功能,具體的程式碼如下,是最基本的應用: 實體: public class DepartmentDto { @ApiModelProper

[email protected]註解型別的校驗

@Valid註解可以實現資料的驗證,你可以定義實體,在實體的屬性上新增校驗規則,而在API接收資料時新增@valid關鍵字,這時你的實體將會開啟一個校驗的功能,具體的程式碼如下,是最基本的應用: 實體: public class DepartmentDto { @ApiModelProper

python3使用selenium2iframe的126網易進行登入

學習selenium2時候發現找不到這類文章,找到的質量感覺挺一般的,大多是find_element_by_xpath方式,感覺有點太扯蛋了,所以就寫了這博文,希望對新手幫助,歡迎留言討教! import sys import time from selenium import webd

MongoDB 聚合嵌入的陣列扁平資料+管道)

MongoDB學習教程 先看下要操作的主要資料結構: { "_id" : "000015e0-3e9c-40b3-bd0d-6e7949f455c0", "evaluation_type" : 2, "reply_count" : 5, "type" : 3,

樹形多級選單資料來源結構與扁平結構互轉

1.前言 在日常開發中,往往會有這樣的需求:根據後端返回的資料,動態渲染出一顆多級導航選單樹,類似於計算機中資源管理器的樣子。如下圖所示: 要實現這樣的需求,其實不難,只是對後端返回的資料來源有要求,如果後端返回的資料能夠很清楚的表現出節點與節點之間的層級關係,那麼前端實現起來就易如反掌。 2.資料來

取出陣列的所有成員

const tree = ['a', ['b', ['c', ['d']]], 'e']; 方法一: const arr1 = tree.flat(Infinity); //["a", "b", "c", "d", "e"] 方法二: function* iterTree(tre

【C++ -> 容器初始】結構體複雜結構初始

案例簡述 最近在設計資料結構時,資料之間較為複雜,資料結構如下: typedef struct tagDataInfo { long offs; // 索引 char name[20]; /

利用Gsonjson進行flatten(扁平)處理

目錄 Gson是Google釋出的一個處理json的java庫。通過使用Gson可以將java物件序列化為json字串,或是將json字串反序列化為java物件。 在Gson中,JsonElement是抽象類,由JsonObject、JsonArray、J

Redis使用AOP無縫專案快取

原始碼參考 http://www.cnblogs.com/mrlinfeng/p/5857775.html 話不多說先上參考程式碼,後面附上自己踩坑! 目前由於專案需要,只需要做查詢部分: 資料查詢時每次都需要從資料庫查詢資料,資料庫壓力很大,查詢速度慢,因此設定快取