簡體   English   中英

ES6如何在JavaScript中將鍵,值對遞歸轉換為字符串?

[英]ES6 How to convert key, value pair to string recursively in javascript?

我嘗試插入錯誤消息,因為我需要特殊的文本格式。 如今,最佳做法是什么:)感謝您的幫助!

http://codepen.io/radosch/pen/wWYPYG?editors=1111

期望的結果:

Password longer then 5 chars \n
Email has invalid format \n

資源:

let data = {
  "errors": [
    {
      "password": "must min have 5 characters"
    },
    {
      "email": "has invalid format"
    }
  ]
}

可能的解決方案:

let res = data.errors.map(function(error, index) {
  let keyName = Object.keys(error)
  let str = error[keyName]
  return keyName + " " + str ;
});

console.log(res.join("\n"));

像這樣嗎

data.errors.map(error => Object.keys(error).map(key => `${key} ${error[key]}`)).join('\n');

請注意,ES6函數非常緩慢(至少在nodejs上是如此)( 但不僅如此),因此我仍將使用ES5函數,例如

var res = '';
for (let i = 0; i < data.errors.length; i++) {
  var key = Object.keys(data.errors[i])[0];
  res += key + ' ' + data.errors[i][key] + '/n';
}

基准測試:

question x 189,765 ops/sec ±1.39% (82 runs sampled)
maxx answer x 267,565 ops/sec ±0.98% (80 runs sampled)
for keys x 1,735,444 ops/sec ±0.85% (82 runs sampled)
Fastest is for keys

考試:

"use strict";
var Benchmark = require('benchmark');
var suite = new Benchmark.Suite;

suite
.add('map', function() {
let data = {
  "errors": [
    {
      "password": "must min have 5 characters"
    },
    {
      "email": "has invalid format"
    }
  ]
}

let res = data.errors.map(function(error, index) {
  let keyName = Object.keys(error)
  let str = error[keyName]
  return keyName + " " + str ;
});
res = res.join("\n");
})
.add('maxx answer', function() {
let data = {
  "errors": [
    {
      "password": "must min have 5 characters"
    },
    {
      "email": "has invalid format"
    }
  ]
}
data.errors.map(error => Object.keys(error).map(key => `${key} ${error[key]}`)).join('\n');

})
.add('for keys', function() {
let data = {
  "errors": [
    {
      "password": "must min have 5 characters"
    },
    {
      "email": "has invalid format"
    }
  ]
}

var res = '';
for (let i = 0; i < data.errors.length; i++) {
  var key = Object.keys(data.errors[i])[0];
  res += key + ' ' + data.errors[i][key] + '/n';
}
})
// add listeners
.on('cycle', function(event) {
  console.log(String(event.target));
})
.on('complete', function() {
  console.log('Fastest is ' + this.filter('fastest').map('name'));
})
// run async
.run({ 'async': true });

暫無
暫無

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

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