我正在尝试使用一个function (usernameSent) {
var usernameEncoded = usernameSent; // Current value: utf8
var usernameDecoded = decodeURI(usernameReceived); // Decoded
// do stuff
}
对破坏map对象,例如:
[key, value]
此示例应打印:
var v = { foo: 'bar'};
function f({key, value}) {
console.log('key is ' + key);
console.log('value is ' + value);
}
f(v);
但实际上是在打印:
key is foo
value is bar
我怎样才能做到这一点?注意:密钥名称可能有所不同。
答案 0 :(得分:3)
不确定您是否可以在参数内直接析构键/值。
但是你可以在函数内部进行..
例如
const v = { foo: 'bar'};
function f(o) {
const [key, value] = Object.entries(o)[0];
console.log('key is ' + key);
console.log('value is ' + value);
}
f(v);
答案 1 :(得分:1)
不确定这是您正在寻找的,但Object.keys()
确实可以解决问题。
var v = { foo: 'bar'};
function f(o) {
console.log('key is ' + Object.keys(o)[0]);
console.log('value is ' + o[Object.keys(o)[0]]);
}
f(v);
答案 2 :(得分:1)
您可以使用Object.entries
获取对象的条目,该条目返回每个条目的键值数组。
function f(object) {
for (var [key, value] of Object.entries(object)) {
console.log('key is ' + key);
console.log('value is ' + value);
}
}
f({ foo: 'bar' });
答案 3 :(得分:1)
这适用于具有多个属性的对象。
var object = { foo: 'bar', food: 'pizza'};
function f(object) {
// get an array of all keys
let keys = Object.keys(object);
// iteratate over this array
keys.forEach(key => {
// output the current key and associated value
let property = object[key];
console.log('key is ' + key);
console.log('value is ' + property);
});
}
f(object);

答案 4 :(得分:0)
var v = { foo: 'bar'};
function f(obj) {
var pair = Object.entries(obj)[0];
console.log('key is ' + pair[0]);
console.log('value is ' + pair[1]);
}
f(v);