如果打字稿中的对象键是动态的,如何获取值?

时间:2019-07-24 14:00:33

标签: javascript typescript object

我有一个object.array数组就是这样。

animal = [{"cow":{"leg":4,"eye":2}},{"monkey":{"leg":2,"eye":2}}]

这里的第一把钥匙像牛和猴子一样动感

所以我的问题是,如果第一个键是动态的,我该如何访问键腿

6 个答案:

答案 0 :(得分:2)

如果您确定数组中的每个对象只有1个属性(这是动物的类型),则可以执行以下操作。

animals = [{"cow":{"leg":4,"eye":2}},{"monkey":{"leg":2,"eye":2}}];
    
for (let animal of animals) {
  let propName = Object.keys(animal)[0];
  let result = animal[propName];
  console.log(result); // <- Do what you want with it
}

答案 1 :(得分:1)

这将为您提供一系列包含每种动物内容的物体。

git checkout A; git add .

答案 2 :(得分:0)

也许将其转换为“非动态键”对象?

const animal = [{"cow":{"leg":4,"eye":2}},{"monkey":{"leg":2,"eye":2}}]
const newanimal = animal.map(obj => {
  const keys = Object.keys(obj)
  return keys.map(key => ({ key, value: obj[key] }))
}).flat(Math.Infinity)

console.log(newanimal)

答案 3 :(得分:0)

1)用那个钥匙找到一只动物

2)用[animal]返回它

3)照常使用(.leg

const animals = [{ cow: { leg: 4, eye: 2 } }, { monkey: { leg: 2, eye: 2 } }];

const animal = 'cow';
const leg = animals.find(a => !!a[animal])[animal].leg;

答案 4 :(得分:0)

您可以使用baseprivate void setFragment(Fragment fragment) { FragmentManager manager = getSupportFragmentManager(); String tagFromFragAddedToBackStack = getCurrentFragment().getTag(); String fragmentTag = fragment.getClass().getName(); String fragFromBackStackTag; FragmentTransaction fragTransFromBackStack; int i; for ( i = 0; i < manager.getBackStackEntryCount() ; i++){ fragFromBackStackTag = manager.getBackStackEntryAt(i).getName(); fragTransFromBackStack = (FragmentTransaction) manager.getBackStackEntryAt(i); fragFromBackStack = manager.findFragmentByTag(fragFromBackStackTag); if (fragFromBackStackTag == fragmentTag){ // Here, I would like to delete the stack which matches } } FragmentTransaction ft = manager.beginTransaction(); ft.replace(R.id.main_frame, fragment, fragmentTag); ft.addToBackStack(tagFromFragAddedToBackStack); ft.commit(); } private Fragment getCurrentFragment(){ if (homeFragment.isVisible()){ return homeFragment; } else if (autonomyFragment.isVisible()) { return autonomyFragment; } else if (shopFragment.isVisible()) { return shopFragment; } else if (accountFragment.isVisible()) { return accountFragment; } else return null; } map将返回一个新数组。 Object.keys用于获取动物数组中每个对象内的所有键。然后map这行将获取腿键的值

Object.keys

答案 5 :(得分:0)

您可以使用新添加的Object.entries,它最适合imo。

因此,对于您的数据,您将拥有:

const animal = ...
for (a of animal) {
    const [animalName, animalDesc] = Object.entries(a)[0]; // assumes there is only one
}
相关问题