如何破坏密钥对对象

时间:2018-03-02 16:26:28

标签: javascript

我正在尝试使用一个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

我怎样才能做到这一点?注意:密钥名称可能有所不同。

5 个答案:

答案 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);