用于从析构数组创建对象的代码段

时间:2017-09-26 12:26:12

标签: javascript arrays ecmascript-6

例如,我有一个包含3个数字的数组:

var arr = [124, -50, 24];

我需要将此数组转换为对象:

{
   x: 124,
   y: -50,
   z: 24
}

我不想使用"旧式"语法,例如:

{
  x: arr[0],
  y: arr[1],
  z: arr[2]
}

所以现在,我正在使用这种语法:

const [x, y, z] = [...arr];
const obj = {x, y, z};

但是,有没有办法用直接的解构数组来对象而不需要临时变量?

3 个答案:

答案 0 :(得分:1)

正如comment中已经提到的那样,您可以使用Immediately Invoked Function Expression (IIFE)在单个步骤中创建对象,但是与多个步骤相比,它的可读性较差。

const arr = [124, -50, 24];
const obj = (([x, y, z]) => ({ x, y, z }))(arr);

console.log(obj);

答案 1 :(得分:1)

只需使用此

   val privKey = "My wallet key"
   // Web3j
   val credentials = Credentials.create(privKey!!.toString(16))
   val amountWei = Convert.toWei(edtAmount.text.toString(),
                   Convert.Unit.ETHER).toBigInteger()
   val rawTransaction = RawTransaction.createEtherTransaction(
                        BigInteger.valueOf(it.nonce.toLong()),
                        BigInteger.valueOf(gas_price.toLong()),
                        BigInteger.valueOf(gas_Limit.toLong()), 
                        edt_addrs.text.toString(),
                        amountWei)
   val signedMessage = TransactionEncoder.signMessage(rawTransaction, credentials)
   val hexValue = Numeric.toHexString(signedMessage)

答案 2 :(得分:0)

您也可以

const obj = {};
([obj.x, obj.y, obj.z] = arr);

避免临时变量,但我怀疑这是否有所改善。