【问题标题】:How extract Object with "{ }" from an string [duplicate]如何从字符串中提取带有“{}”的对象[重复]
【发布时间】:2020-06-03 18:47:24
【问题描述】:

我尝试从下面的数组中提取对象:

var array = [];
array = 
a,b,c,{"A":"0","f":"1","g":"2"},{"B":"5","v":"8","x":"4"},{"C":"0","f":"1","g":"2"},c,b

想象一下提取这个:

result = [
{"A":"0","f":"1","g":"2"},{"B":"5","v":"8","x":"4"},{"C":"0","f":"1","g":"2"}
         ]

我使用了我的代码,但没有给我正确的答案:

for (var i =0 ; i < array.length ; i++) {
   console.log((array[i].split(','));
} 

在这段代码中,我只获取每一行中的每个变量 我需要更多的东西,因为每次也许我有不同的 在此示例中具有例如 2 个对象的数组我只有 3 对象。我尝试定义如果我有任何对象,我可以找到它们并将它们推送到一个数组中。

【问题讨论】:

  • 什么是abc
  • 他们是一个变量想象 1,2,3
  • 我想我的问题是那些可以是任意值吗?如果是,是什么让您要提取的对象特别?

标签: javascript arrays object


【解决方案1】:

您可以使用Array.filter

var array = [];
array = [
'a','b','c',{"A":"0","f":"1","g":"2"},{"B":"5","v":"8","x":"4"},{"C":"0","f":"1","g":"2"},'c','b'
        ];
        
 let result = array.filter(e => typeof e === 'object');
 console.log(result)

【讨论】:

  • 也许 OP 不想要 null 值。
  • Maybe?我刚刚在提供的输入上添加了解决方案,因为输入中没有任何空值,我将保持原样。但是,过滤掉空值并不是什么大的变化。
  • 我使用这段代码但报错:array.filter is not a function
  • 我像这样创建数组 = [ ] 但我的回答不是数组 这是字符串 我不能对字符串使用过滤器 我应该改变我的问题
【解决方案2】:

您可以使用数组缩减功能。在reduce回调中检查元素的类型是否为object,然后在累加器数组中推送元素

var array = [];
array = [
  'a', 'b', 'c', {
    "A": "0",
    "f": "1",
    "g": "2"
  }, {
    "B": "5",
    "v": "8",
    "x": "4"
  }, {
    "C": "0",
    "f": "1",
    "g": "2"
  },
  'c', 'b'
];

let newArr = array.reduce((acc, curr) => {

  if (typeof(curr) === 'object') {
    acc.push(curr)
  }
  return acc;
}, []);

console.log(newArr)

【讨论】:

  • 也许 OP 不想要 null
猜你喜欢
  • 2014-03-25
  • 2017-09-24
  • 2020-04-22
  • 1970-01-01
  • 1970-01-01
  • 2019-06-17
  • 1970-01-01
  • 2019-04-30
  • 2019-02-12
相关资源
最近更新 更多