JavaScript 选择类似数组的对象?

标签 javascript json object

问题如下: 我有一个 JSON 文件,其中包含具有以下名称的对象:"item0": { ... }、"item1": { ... }、"item2": { ... }。但在使用 if 方法时我无法访问它们。

到目前为止我所做的事情:

$.getJSON('/assets/storage/items.json', function(data) {
    jsonStringify = JSON.stringify(data);
    jsonFile = JSON.parse(jsonStringify);

    addItems();
});

var addItems = function() {
    /* var declarations */

    for (var i = 0; i < Object.keys(jsonFile).length; i++) {
        path = 'jsonFile.item' + i;
        name = path.name;
        console.log(path.name);
        console.log(path.type);
    }

}

如果我console.log path.name 它返回未定义。但如果我输入 jsonFile.item0.name 它会返回值。那么我如何使用字符串路径,以便将其视为对象,或者是否有其他方法来命名 json 项。

最佳答案

正如其他人所说,'jsonFile.item' + i 没有从 jsonFile 中检索任何内容:它只是一个字符串。

其他问题:

  • 首先对数据进行字符串化然后再次解析是没有意义的。这就是来回移动,最终到达您已经所在的位置:data 是您想要使用的对象
  • 请勿将数据命名为 jsonFile。它是一个对象,而不是 JSON。 JSON 是文本。但由于上面的注释,你不需要这个变量
  • 使用 varletconst 声明变量,并避免使用全局变量。
  • 使用类似 Promise 的语法 ($.getJSON( ).then)
  • 迭代对象属性,而不假设它们被称为 item0item1、...

建议代码:

$.getJSON('/assets/storage/items.json').then(function(data) {
    for (const path in data) {
        console.log(data[path].name, data[path].type);
    }
});

关于JavaScript 选择类似数组的对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55344346/

相关文章:

php - 在 php 中为 Web 应用程序创建临时用户帐户

javascript - 子组件在 Angular 4 中不起作用

javascript - 解析 Leaflet 的 Foursquare API JSON

C# JSON 如何读取具有未知父名称的特定值

C#动态替换对象类中的对象~

javascript - 如何在 javascript 函数对象中测试是否调用了无效方法?

javascript 按位 64 位实现

javascript - 如何在 Backbone.js 中处理初始化和渲染 subview ?

javascript - Angular1.6工厂

java - 我对遗传类(class)的方法有疑问