1. 程式人生 > >關聯陣列(陣列下標索引不僅僅為數字還可以是字串等)

關聯陣列(陣列下標索引不僅僅為數字還可以是字串等)

最近遇上的奇怪的陣列下標,查閱資料瞭解了一下,原來是關聯陣列,後期有詳細瞭解到關聯陣列的使用情況的話再和大家分享。

關聯陣列

 “關聯陣列是一種具有特殊索引方式的陣列。不僅可以通過整數來索引它,還可以使用字串或者其他型別的值(除了NULL)來索引它。

中文名

關聯陣列

一種具有特殊索引方式的陣列

標量資料

元素特定順序

關聯陣列和陣列類似,由以名稱作為鍵的欄位和方法組成。

它包含標量資料,可用索引值來單獨選擇這些資料,和陣列不同的是,關聯陣列的索引值不是非負的整數而是任意的標量。這些標量稱為Keys,可以在以後用於檢索陣列中的數值。

關聯陣列的元素沒有特定的順序,你可以把它們想象為一組卡片。每張卡片上半部分是索引而下半部分是數值。

JavaScript的物件本質就是一個關聯陣列。

Perl語言中的關聯陣列用法:

%ARRAY=(key1,value1,key2,value2,key3,value3);

一個KEY 對應一個VALUE

使用陣列

陣列下標

JScript 中的陣列是稀疏的。也就是說,如果一個數組具有三個元素,編號分別為 01 2,您就可以建立元素 50,而不必擔心從 3 49 的引數。如果該陣列有一個自動的 length 變數,該 length 變數被設為 51,而不是 4。當然您可以建立各元素的編號之間沒有間隙的陣列,不過沒有必要這樣做。

JScript 中,物件和陣列幾乎相同。兩個主要差別是物件沒有自動長度屬性,而陣列沒有物件的

屬性和方法。

陣列定址

使用方括號“[]”來定址陣列。方括號中是一個數值或一個值為整數的表示式。下面的示例假定在指令碼的其他地方已定義了entryNum變數,且已賦值。

theListing = addressBook[entryNum];
theFirstLine = theListing[1];

將物件作為關聯陣列

通常,使用點運算子“.”訪問物件的屬性。例如,

myObject.aProperty

在這裡,屬性名稱是一個識別符號。也可以用索引運算子“[]”訪問物件的屬性。在這裡,是把物件看作一個關聯陣列關聯陣列是一種資料結構,它可以動態地將任意的資料的值與任意的字串相關聯。例如,

myObject["aProperty"] // 
與上面相同。

儘管索引運算子更多地用於訪問陣列元素,當用於物件時,索引總是以字串文字表示的屬性名稱。

注意訪問物件屬性的兩種方法的重要差異。

運算子

屬性名稱作為

對屬性名稱的處理

“.”

識別符號

不能作為資料處理

索引“[]”

字串文字

被作為資料處理

在執行之前並不知道屬性名稱時,這個差異會有用(比如基於使用者輸入構造物件時)。要想從一個關聯陣列提取所有的屬性,必須用 for … in 迴圈。

相關推薦

關聯陣列陣列索引不僅僅數字可以是字串

最近遇上的奇怪的陣列下標,查閱資料瞭解了一下,原來是關聯陣列,後期有詳細瞭解到關聯陣列的使用情況的話再和大家分享。 關聯陣列  “關聯陣列”是一種具有特殊索引方式的陣列。不僅可以通過整數來索引它,還

js陣列使用字串索引

var arr = [] //等同於 arr=new Array(); arr[0] = "下標索引是數字"; arr[1] = "下標索引是數字1"; arr["z"] = "下標索引是字母"; arr["下標"] = "下標索引是中文!"

陣列排序,返回陣列值在原陣列中的序號

  功能:對輸入的陣列進行排序,返回的是,從小到大陣列對應於原陣列的下標(序號) 。比如 1 7 3 2 9  返回:0 3 2 1 4 思想:在函式中動態開闢一個數組,用於儲存下標。初始化的時候為0-(n-1)。陣列值在排序的過程中,下標值也跟著排序。最後返回指向下標陣

(動態規劃DP)面試題:求陣列中兩個數的最大差值只能大的減去小的符合無後效性

空間複雜度優化演算法 void sovle_maxSub_Dp_OptimalSpace(int *a, int n){ int S=0; int max_value=INT_MIN; int max_index=0; for(int i=n-2;i>=1;

js中刪除陣列中的某一元素

1、使用filter陣列去重; var arr1 = [1,2,3,4,5,6];//待運算元組 var j = 2;//待刪除元素 var noRepeat = function(arr1,arr2){ return arr1.flter(function(e){ re

陣列排序,返回陣列值在原陣列中的序號 .

功能:對輸入的陣列進行排序,返回的是,從小到大陣列對應於原陣列的下標(序號) 。比如 1 7 3 2 9  返回:0 3 2 1 4 思想:在函式中動態開闢一個數組,用於儲存下標。初始化的時候為0-(n-1)。陣列值在排序的過程中,下標值也跟著排序。最後返回指向下標陣列的

json_encode轉化陣列時帶

  //錯誤 data[$i]=[date("y-m-d H:i:s"),資料查詢] //正確 data[]=[date("y-m-d H:i:s"),資料查詢]       做統計的時一個需求,想將查詢到的陣列轉化成想要的json資料

[mongodb]使用mongodb中陣列元素的來做更新(update)多維陣列

mongodb的DBObject支援儲存多維陣列,在增加元素時使用"$push"操作符,在刪除元素時使用"$pull". 但是在做更新時問題就來了,mongodb首先支援使用"$"來定位陣列中的某個元素,例如: > t.find() { "_id" : ObjectI

DELL陣列陣列Foreign命令行裏重做陣列

alt mage 重做 ges 情況 系統 .cn 故障現象 png 故障現象 (陣列Foreign 系統下重做陣列) 例:四合一機器(DELL_XENCOMPA09) 有四個硬盤 如圖 少認到一個 df -h fdisk -l 2>/dev/nu

劍指Offer 51. 構建乘積陣列 陣列

題目描述 給定一個數組A[0,1,...,n-1],請構建一個數組B[0,1,...,n-1],其中B中的元素B[i]=A[0]*A[1]*...*A[i-1]*A[i+1]*...*A[n-1]。不能使用除法。 題目地址 https://www.nowcoder.com/practice/94a4d381a

資料結構與演算法120—陣列陣列為什麼從0開始

更多內容訪問:www.lifesmile.cn 一、陣列為什麼從0開始?     提到陣列很多人都會覺得非常簡單,是的,使用起來非常簡單。但是我相信很多人都沒有理解到它的精髓。比如說陣列為啥要從0開始而不是1開始呢? 二、什麼是陣列?     陣列是一種線性表資料結構

Swift4新特性介紹2支援泛型,Codable序列化

原文 http://www.hangge.com/blog/cache/detail_1824.html 文章目錄 下標支援泛型 下標的返回型別支援泛型 下標型別同樣支援泛型 Codable 序列化

C語言之陣列陣列賦值的三種形式

在C語言中,對陣列進行賦值的三種形式 1、通過迴圈的形式     即:陣列名[下標]      對陣列的元素進行依次賦值 #include <stdio.h> int main() { int i; int a[10] = {0}

C/C++二維陣列陣列指標——二維陣列的傳值和二維陣列的一維訪問

二維陣列既可以通過二維訪問也可以通過一維訪問。 對於二維陣列的傳值,引進了陣列指標。 #include <stdio.h> void foo(int *p,int n)//一維訪問 {

vector容器的大坑:對vector容器使用索引進行訪問的時候程式崩潰!!!

程式中首次對一個vector物件進行下標索引賦值運算,即使該vector已經在建構函式中完成了初始化,但是使用下標訪問它,對它賦值仍然導致程式崩潰,提示訪問了未初始化的物件或提示指標越界! 實際上,首次對空的vector進行增加元素,必須使用push_back

java中用正則表示式獲取一個指定的子字元在字串中出現的指定次數的索引,並且進行字串分割

在開發中遇到這樣的一個報文: 00000123000003RQ0 ################ 000003 <tellerLvl0>0</><brc>3004</><fPIflag>0</><

Swift 字串數字索引字元

使用下標進行字串字元索引 extension String{ subscript(index:Int)->Character?{ return self[self.cha

java獲取某個子字串在整個字串中第N次出現時的索引

//子字串modelStr在字串str中第count次出現時的下標 private int getFromIndex(String str, String modelStr, Integer count) { //對子字串進行匹配 Matcher slas