从对象如何仅在Javascript中检索特定的键和值

时间:2019-07-19 07:21:23

标签: javascript

在对象中,值创建为我的inputput值对象,但我需要检索特定的键值,例如以“ key”开头的值,并且我只需要JavaScript而不需要JSON概念

输入对象

object = {key_11: "12d", item_12: "a2324", key_16: "34|aa"},
 {key_14: "345|w", key_21: "a|b", key_12: "56|asa|45", item_16: "66"},
 {item_14: "AA|BB, key_15: "44|BB", item_21: "WW"},
 {key_25: "25|a|aa|",  item_01: "999",  key_05: "234"}

输出对象

object = {key_11: "12d", key_16: "34|aa", key_14: "345|w", key_21: "a|b", key_12: >"56|asa|45", key_25: "25|a|aa|", key_05: "234"}

感谢您的帮助

4 个答案:

答案 0 :(得分:2)

如果修复语法问题并将对象放入数组中,则可以使用数组方法来帮助您实现这一目标。

要实现这一点,可以使用Object.entries()将数组中的每个对象转换为键值对数组。然后,您可以使用它来.filter()除去不是.startsWith()“键”的条目。最后,您可以使用Object.fromEntries()重建键值对的对象,然后可以使用扩展语法(...)将其扩展为累积的对象:

const object = [{
    key_11: "12d",
    item_12: "a2324",
    key_16: "34|aa"
  },
  {
    key_14: "345|w",
    key_21: "a|b",
    key_12: "56|asa|45",
    item_16: "66"
  },
  {
    item_14: "AA|BB",
    key_15: "44|BB",
    item_21: "WW"
  },
  {
    key_25: "25|a|aa|",
    item_01: "999",
    key_05: "234"
  }
];


const res = object.reduce(
  (a, o) => ({ ...a,
    ...Object.fromEntries(Object.entries(o).filter(([k]) => k.startsWith('key')))
  }), {});

console.log(res);

请记住,Object.fromEntries()当前处于草稿模式,为了与浏览器更兼容,可以使用以下命令:

const object = [{
    key_11: "12d",
    item_12: "a2324",
    key_16: "34|aa"
  },
  {
    key_14: "345|w",
    key_21: "a|b",
    key_12: "56|asa|45",
    item_16: "66"
  },
  {
    item_14: "AA|BB",
    key_15: "44|BB",
    item_21: "WW"
  },
  {
    key_25: "25|a|aa|",
    item_01: "999",
    key_05: "234"
  }
];


const res = object.reduce(
  (a, o) => ({ ...a,
    ...Object.entries(o).filter(([k]) => k.indexOf('key') === 0).reduce((acc, [k, v]) => ({ ...acc,
      [k]: v
    }), {})
  }), {});

console.log(res);

答案 1 :(得分:1)

如果您要将对象数组合并为一个,请考虑以下事项:

var obj = [{key_11:"12d",item_12:"a2324",key_16:"34|aa"},{key_14:"345|w",key_21:"a|b",key_12:"56|asa|45",item_16:"66"},{item_14:"AA|BB",key_15:"44|BB",item_21: "WW"},{key_25:"25|a|aa|",item_01:"999",key_05:"234"}];

var final = {};
obj.forEach(a => Object.entries(a).forEach(e => e[0].indexOf('key') > -1 ? Object.assign(final, {[e[0]]: e[1]}):0));
console.log(final);

答案 2 :(得分:0)

首先在对象初始化中有一个错字

  

key_12:>“ 56 | asa | 45”

因此删除多余的>符号并使用键检索值

  

console.log(object.key_12);

var object = {key_11: "12d", key_16: "34|aa", key_14: "345|w", key_21: "a|b", key_12: "56|asa|45", key_25: "25|a|aa|", key_05: "234"};

console.log(object.key_12);

如果我没有误会希望它能解决您的问题。谢谢

答案 3 :(得分:-1)

您的对象的语法不正确,请考虑使用数组代替:

arrayOfObjects = [{key_11: "12d", item_12: "a2324", key_16: "34|aa"}, {key_14: "345|w", key_21: "a|b", key_12: "56|asa|45", item_16: "66"}, {item_14: "AA|BB", key_15: "44|BB", item_21: "WW"}, {key_25: "25|a|aa|",  item_01: "999",  key_05: "234"}]