使用对象转换数组以进行操作

时间:2018-09-30 14:56:52

标签: javascript arrays json

我正在尝试操纵此数组,并使用解析,推送和保存数据命令进行播放。但由于某种原因没有阅读。 有什么帮助吗? 我是新手,只是想练习。 应该是对象数组。

    var employeeString = [
    { first_name: 'Josh', last_name:'Neil', nationality:'Indian'},
    { first_name: 'Brian', last_name:'Cok', nationality:'Canadian'},
    { first_name: 'Katja', last_name:'Fanta', nationality:'German'} 
];
    var jsonValues = JSON.stringify(employeeString);
    current_values = JSON.parse(jsonValues);

    var nationality = [];
    //console.log (current_values);

    for ( i = 0; i < current_values.length; i++) {
        var currentItem = current_values[i]
        var first_name = currentItem['first_name'];
        var last_name = currentItem['last_name'];

        //push value into array
        nationality.push(currentItem['nationality']);
        if (currentItem == 'first_name' || currentItem == 'last_name') { 
            return id[i+1]; 
        }
    }

        console.log (first_name , last_name);

4 个答案:

答案 0 :(得分:1)

您不需要解析已经为JSON的对象。 例如JSON.parse('[{x:10},{y:20}]');将从字符串返回JSON对象。需要执行此步骤才能访问x和y的值,它们是字符串形式的,您可以在其周围看到''。但是在您的情况下,您已经有了一个JSON对象,无需再次解析它。 此外,如果要打印first_name,请在console.log中不要在其周围添加''。这是您的工作代码

var current_values = [
  { first_name: 'Josh', last_name: 'Neil', Nationality: 'Indian' },
  { first_name: 'Brian', last_name: 'Cok', Nationality: 'Canadian' },
  { first_name: 'Katja', last_name: 'Fanta', Nationality: 'German' }
];

//     current_values = JSON.parse(employeeString);

//     console.log(current_values);

for (i = 0; i < current_values.length; i++) {
  var currentItem = current_values[i]
  var first_name = currentItem['first_name'];
  var last_name = currentItem['last_name'];
  console.log(first_name, last_name);
}

答案 1 :(得分:0)

JSON.parse方法接受一个 string ,但是您要为其提供一个对象数组。

var values = JSON.parse("[{'first_name': 'Josh', ...}, ...]");

会更好。

通常,解析会将字符串转换为对象。 http://www.willamette.edu/~fruehr/haskell/seuss.html

答案 2 :(得分:0)

您不需要JSON.parse(employeeString),因为它已经是对象。


JSON.parse用于从字符串表示形式创建对象,例如将字符串'{"prop":42}'解析为具有属性prop且其值为42的实际对象。由于代码中的employeeString已经是一个对象,因此您无需再次JSON.parse

顺便说一句,你可能是这个意思

// notice that this is now an actual string
var employeeString = `[
    { first_name: 'Josh', last_name:'Neil', Nationality:'Indian'},
    { first_name: 'Brian', last_name:'Cok', Nationality:'Canadian'},
    { first_name: 'Katja', last_name:'Fanta', Nationality:'German'} 
]`;

答案 3 :(得分:0)

employeeString的数据类型是Array,但是JSON.parse()应该解析JSON数据。因此,您可以在解析之前先将employeeString更改为JSON数据。