打字稿mapKey和挑选

问题描述

我想在ts中转换以下js代码,而不使用loadish.js。

let claimNames = _.filter<string>(_.keys(decodedToken),o =>
    o.startsWith(ns)
  );      
let claims = <any>(
   _.mapKeys(_.pick(decodedToken,claimNames),(value,key) =>
      key.replace(ns,"").substring(1)
   )
);

或者在某个地方我可以找到有关这种情况的帮助。

解决方法

因此,您有一个对象,其键以ns定义的子字符串开头,假设它是'ns'。

示例:

{
  foobar: 'foobar',nsfoo: 'foo',nsbar: 'bar'
}

您要将其映射到

{
  foo: 'foo',bar: 'bar'
}

您可以这样做:

var ns = 'ns';
var obj = {
  foobar: 'foobar',nsbar: 'bar'
};

var newObj = {};
Object.keys(obj).filter(key => key.startsWith(ns)).forEach(key => newObj[key.replace(ns,'')] = obj[key]);

console.log(newObj);