[英]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.