在JavaScript中,键/值对列表通常使用对象(Object)或Map数据结构来实现。键/值对是一种基本的数据结构,允许你通过唯一的键来存储和访问对应的值。
这是JavaScript中最常见的键/值对存储方式。
示例代码:
// 创建空对象
const keyValuePairs = {};
// 添加键值对
keyValuePairs['name'] = 'John';
keyValuePairs['age'] = 30;
keyValuePairs['city'] = 'New York';
// 或者使用对象字面量
const person = {
name: 'John',
age: 30,
city: 'New York'
};
// 访问值
console.log(person.name); // 输出: John
console.log(person['age']); // 输出: 30
优势:
ES6引入了Map数据结构,专门用于存储键值对。
示例代码:
// 创建Map
const keyValueMap = new Map();
// 添加键值对
keyValueMap.set('name', 'John');
keyValueMap.set('age', 30);
keyValueMap.set('city', 'New York');
// 或者从数组初始化
const entries = [
['name', 'John'],
['age', 30],
['city', 'New York']
];
const personMap = new Map(entries);
// 访问值
console.log(personMap.get('name')); // 输出: John
console.log(personMap.get('age')); // 输出: 30
优势:
解决方案:
// 对于对象
const person = { name: 'John' };
console.log('name' in person); // true
console.log(person.hasOwnProperty('name')); // true
// 对于Map
const personMap = new Map([['name', 'John']]);
console.log(personMap.has('name')); // true
解决方案:
// 对象遍历
const person = { name: 'John', age: 30 };
for (const key in person) {
if (person.hasOwnProperty(key)) {
console.log(`${key}: ${person[key]}`);
}
}
// 或者使用Object.entries
Object.entries(person).forEach(([key, value]) => {
console.log(`${key}: ${value}`);
});
// Map遍历
const personMap = new Map([['name', 'John'], ['age', 30]]);
personMap.forEach((value, key) => {
console.log(`${key}: ${value}`);
});
解决方案:
// 对象
const person = { name: 'John', age: 30 };
const keys = Object.keys(person); // ['name', 'age']
const values = Object.values(person); // ['John', 30]
// Map
const personMap = new Map([['name', 'John'], ['age', 30]]);
const mapKeys = [...personMap.keys()]; // ['name', 'age']
const mapValues = [...personMap.values()]; // ['John', 30]
解决方案:
// 对象合并
const obj1 = { a: 1 };
const obj2 = { b: 2 };
const mergedObj = { ...obj1, ...obj2 }; // { a: 1, b: 2 }
// Map合并
const map1 = new Map([['a', 1]]);
const map2 = new Map([['b', 2]]);
const mergedMap = new Map([...map1, ...map2]); // Map { 'a' => 1, 'b' => 2 }
const config = {};
Object.defineProperty(config, 'apiUrl', {
value: 'https://api.example.com',
writable: false,
enumerable: true
});
console.log(config.apiUrl); // https://api.example.com
config.apiUrl = 'new url'; // 不会生效(严格模式下会报错)
const privateData = new WeakMap();
class Person {
constructor(name) {
privateData.set(this, { name });
}
getName() {
return privateData.get(this).name;
}
}
const john = new Person('John');
console.log(john.getName()); // John
以上是在JavaScript中创建和使用键/值对列表的全面指南,涵盖了基础概念、实现方式、常见问题和解决方案。
没有搜到相关的文章