如何在Reactjs中将对象的嵌套数组转换为字符串数组?

时间:2019-02-09 13:40:45

标签: javascript arrays reactjs ecmascript-6

我想映射以下JSON结构并将其转换为简单字符串数组,但在映射时遇到未定义的错误。

JSON结构:

/?source=${context.resourcePath}

尝试这样映射:

var yourArray = [ 
            {
            "options": [
                {
                    'id':1,
                    'name':'All'
                },{
                    'id':2,
                    'name':'Javascript'
                },{
                    'id':2000,
                    'name':'Ruby'
                }    
            ]
            }
        ];

注意:按照此示例How do I convert a javascript object array to a string array of the object attribute I want?

2 个答案:

答案 0 :(得分:0)

您在代码中遇到的两个问题

  1. 这里没有退货var newArray = yourArray.map( function( el ){ el.options.map( function( eln )
  2. 第二yourArray.options,您需要使用索引或您将函数调用作为参数的el进行访问。

var yourArray = [{"options": [{'id':1,'name':'All'},{'id':2,'name':'Javascript'},{'id':2000,'name':'Ruby'}]}];

var newArray = yourArray.map( function( el ){ 
  return el.options.map( function( eln ){ 
    return eln.name; 
  })
});
console.log (newArray);

更新:

  

感谢您的回答,很抱歉再次打扰您,我的实际JSON   结构如下:{“ brand”:[{“ options”:[{“ catgeory_name”:   “ Sigma”},{“ catgeory_name”:“ Footner”}]}]}我们如何映射它以获得   像这样的输出[“ Sigma”,“ Footner”]因为我仍然在   地图时出现未定义的错误

let data = { "brand": [ {"options": [{"catgeory_name": "Sigma"},{"catgeory_name": "Footner"}]} ] }

let op = data.brand[0].options.map(({catgeory_name})=>catgeory_name)

console.log(op)

答案 1 :(得分:0)

这是使用map的简单解决方案,由于该选项位于第一个索引内,因此您可以使用yourArray[0]

var yourArray = [ 
            {
            "options": [
                {
                    'id':1,
                    'name':'All'
                },{
                    'id':2,
                    'name':'Javascript'
                },{
                    'id':2000,
                    'name':'Ruby'
                }    
            ]
            }
        ];
        
var newArray = yourArray[0].options.map(i => i.name)
console.log(newArray)