簡體   English   中英

如何 JavaScript 中的“地圖”的 map 鍵/值對?

[英]How to map key/value pairs of a "map" in JavaScript?

如何 JavaScript 中的“映射”的 map 鍵/值對:

var map = {"a": 1, "b": 2, "c": 3};

alert(JSON.stringify(map));

我需要在每次迭代中獲得一個包含鍵/值對的映射器:

// ["a_1", "b_2", "c_3"]
map.map((key, value) => key + "_" + value);

這不是Map對象。 它只是一個普通的對象。 因此,使用Object.entries然后在鍵值對上使用map

 const map = {"a": 1, "b": 2, "c": 3}; const mapped = Object.entries(map).map(([k,v]) => `${k}_${v}`); console.log(mapped);

Object.entries返回:

[["a",1],["b",2],["c",3]]

然后遍歷每個內部數組並使用模板文字創建字符串


如果您有Map對象,請使用Array.from(map)獲取Array.from(map)條目並使用Array.from的第二個參數Array.from每個條目並創建所需的字符串

Array.from(map, ([k,v]) => `${k}_${v}`)

這不是一張地圖,而是一個對象。 (不過,您可能會考慮使用Map 。)

要將其屬性作為鍵/值對獲取,您可以使用Object.entries ,然后您可以將map應用於:

map = Object.entries(map).map(([key, value]) => key + "_" + value);

Object.entries相對較新,但對於舊環境很容易填充。

現場示例:

 var map = {"a": 1, "b": 2, "c": 3}; map = Object.entries(map).map(([key, value]) => key + "_" + value); console.log(map);


或者,使用Map ,您可以使用其內置entries方法,該方法返回一個可迭代對象,將其傳遞給Array.from並使用Array.from的映射回調:

 var map = new Map([ ["a", 1], ["b", 2], ["c", 3] ]); map = Array.from(map.entries(), ([key, value]) => key + "_" + value); console.log(map);

(或者將可迭代對象擴展為一個數組—— [...map.entries()] ——並在其上使用map ,但上面避免了臨時丟棄的數組。)

在這兩種情況下,我都在箭頭函數的參數列表中使用解構,它接收一個[key, value]格式的數組。

您可以獲取對象的條目並加入鍵/值對。

 var map = { a: 1, b: 2, c: 3 }, result = Object.entries(map).map(a => a.join('_')); console.log(result);

您可以使用Object.keys ,它將給出該對象中存在的鍵的數組,然后對該數組使用數組映射方法並訪問每個鍵的值並創建一個字符串

 var map = { "a": 1, "b": 2, "c": 3 }; let neObj = Object.keys(map).map(item => `${item}_${map[item]}`) console.log(neObj)

第一個 [0] 用於位置元素,第二個 [0] 用於名稱鍵或 [1] 用於值等。

console.log([...map][0][0])

例子:

var map = {
  "a": 1,
  "b": 2,
  "c": 3
};
console.log([...map][0][0] + "_" + [...map][0][1])

輸出:

a_1

或者最簡單的形式是,

let list = document.querySelector('ol');
let listitems = list.childNodes;
var list_items_array = Array.from(listitems);

let node_type_map = new Map();

node_type_map.set(1, 'Element');
node_type_map.set(2, 'Attribute');
node_type_map.set(3, 'Text Node');
node_type_map.set(8, 'comment');
node_type_map.set(9, 'Document Itself');
node_type_map.set(10, 'Doctype');

list_items_array.forEach(item => {
    console.log(node_type_map.get(item.nodeType));
})

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM