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
,它只选择对象内的给定字段