Javascript 将对象值从一个对象映射到另一个对象
我有一个区域设置对象,看起来像这样Javascript 将对象值从一个对象映射到另一个对象,javascript,reactjs,ecmascript-6,Javascript,Reactjs,Ecmascript 6,我有一个区域设置对象,看起来像这样 { hello.title: { en: "Hi", sv: "Hej" }, hello.text: { en: "Hur mår du?", sv: "How are you?" }, } function mapToNewObj(locale, obj) { // Here I want to return a new object that looks lik
{
hello.title: {
en: "Hi",
sv: "Hej"
},
hello.text: {
en: "Hur mår du?",
sv: "How are you?"
},
}
function mapToNewObj(locale, obj) {
// Here I want to return a new object that looks like this
let's say the locale is "sv"
return {
hello.title: Hej,
hello.text: 'Hur mår du?'
}
}
我想创建一个新对象,其中键是“hello.title”,值是作为第一个参数传入的区域设置的字符串
我该怎么做
return {
'hello.title': obj['hello.title'][locale],
'hello.text': obj['hello.text'][locale]
}
或通过循环
result = {}
for (var key in obj) {
if (obj.hasOwnProperty(key)) {
result[key] = obj[key][locale]
}
}
return result
或通过循环
result = {}
for (var key in obj) {
if (obj.hasOwnProperty(key)) {
result[key] = obj[key][locale]
}
}
return result
让输入={
“你好,标题”:{
"恩":"你好",
“sv”:“嘿”
},
“你好,文本”:{
“sv”:“你是谁?”,
‘恩’:‘你好吗?’
},
};
函数maptonewbj(语言环境,obj){
返回{
“hello.title”:输入['hello.title'][locale],
“hello.text”:输入['hello.text'][语言环境]
}
}
log(maptonewbj('sv',input))代码>
让输入={
“你好,标题”:{
"恩":"你好",
“sv”:“嘿”
},
“你好,文本”:{
“sv”:“你是谁?”,
‘恩’:‘你好吗?’
},
};
函数maptonewbj(语言环境,obj){
返回{
“hello.title”:输入['hello.title'][locale],
“hello.text”:输入['hello.text'][语言环境]
}
}
log(maptonewbj('sv',input))代码>你的意思是这样的
var语言={
嗯:{
标题:“嘿”,
文字:“你是谁?”,
},
sv:{
标题:"嘿",,
文字:“你好吗?”,
},
};
//@param{string}locale区域设置语言返回为“sv”或“en”
函数returnLanguageMessage(区域设置){
返回{
语言[locale]。标题,
语言[locale]。文本
};
}
你的意思是这样的
var语言={
嗯:{
标题:“嘿”,
文字:“你是谁?”,
},
sv:{
标题:"嘿",,
文字:“你好吗?”,
},
};
//@param{string}locale区域设置语言返回为“sv”或“en”
函数returnLanguageMessage(区域设置){
返回{
语言[locale]。标题,
语言[locale]。文本
};
}
使用通用方法,您可以
var Language = {
"hello.title": {
en: "Hi",
sv: "Hej"
},
"hello.text": {
en: "Hur mår du?",
sv: "How are you?"
},
}
;
// fn receives (value, key), returns a new value for key.
const mapKeys = (fn) => obj => Object.entries(obj)
.reduce((res, [k, v]) => ({...res, [k]: fn.apply(null, [v, k])}), {});
const get = (key) => obj => obj[key];
console.log(mapKeys(get("sv"))(Language));
mapKeys
接受函数fn
并返回接受对象的新函数。它返回一个具有相同形状但由fn
生成的值的对象。这里的fn
只是get
,它只选择对象内部的给定字段。使用通用方法,您可以
var Language = {
"hello.title": {
en: "Hi",
sv: "Hej"
},
"hello.text": {
en: "Hur mår du?",
sv: "How are you?"
},
}
;
// fn receives (value, key), returns a new value for key.
const mapKeys = (fn) => obj => Object.entries(obj)
.reduce((res, [k, v]) => ({...res, [k]: fn.apply(null, [v, k])}), {});
const get = (key) => obj => obj[key];
console.log(mapKeys(get("sv"))(Language));
mapKeys
接受函数fn
并返回接受对象的新函数。它返回一个具有相同形状但由fn
生成的值的对象。这里的fn
只是get
,它只选择对象内的给定字段