【问题标题】:Array.prototype.slice, can't get 'slice' of undefined?Array.prototype.slice,无法获得未定义的“切片”?
【发布时间】:2015-06-08 17:50:52
【问题描述】:

好的,所以我有一些代码以 javascript 数组的形式从服务器获取数据。

我一直在研究原型,发现您可以使用 slice 选择数组的一部分,但即使查看示例,我似乎也无法找出它是如何工作的。

到目前为止,我有一个 module.js 可以加载数据并指向我的索引页面

$.ajaxSetup({
    data: {
        apptoken: apptoken
    }
});

var promise1 = $.get(dbidApplication, {
    a: "dbpage",
    pagename: "index.html"
});


var promise2 = $.get(dbidTable, {
    act: "API_GenResultsTable",
    query: "{3.EX." + kRid + "}",
    jsa: 1,
    options: "num-1",
});


$.when(promise1, promise2).then(function(templateArgs, dataArgs) {
    var template = templateArgs[0];
    var markup = Mustache.render(template, qdb_data);
    document.write(markup);
    $("#formContents").html(markup);
});

我的 index.html 页面除了

之外完全是空白的
var stringit = qdb_data.toString();
var stationid = stringit.slice(4);

console.log(stationid);

在控制台上它显示了我的 stringit 并且在 4 中有数据,所以我不确定我到底做错了什么......总之我正在尝试使用数组来填充模板。

这是我之前的查询返回的内容

var qdb_data = new Array();

 qdb_data[0] = new Array();
 qdb_data[0][0] = "VL14799- FT5850";
 qdb_data[0][1] = "05-13-2015";
 qdb_data[0][2] = "";
 qdb_data[0][3] = "TANK PROPANE";
 qdb_data[0][4] = "PLANT";
 qdb_data[0][5] = "PROPANE";
 qdb_data[0][6] = "TANK 31 PROPANE";
 qdb_data[0][7] = "PLANT";
 qdb_data[0][8] = "TANK 31 PROPANE";
 qdb_data[0][9] = "PROPANE";
 qdb_data[0][10] = "PROPANE";
 qdb_data[0][11] = "100 PSI";
 qdb_data[0][12] = "59 F";
 qdb_data[0][13] = "411";
 qdb_data[0][14] = "";
 qdb_data[0][15] = "";
 qdb_data[0][16] = "BR";

【问题讨论】:

  • 注意:在文档加载完成后使用document.write()将首先将其重置为没有内容,然后再写入参数。
  • 那不是Array.prototype.slice,那是String.prototype.slice
  • 为什么在尝试使用.slice() 之前将二维数组转换为字符串?这对我来说毫无意义。您已经展示了 qdb_data 数组的样子。请在.slice() 调用后显示您想要实现的确切数据结构。如果您想要数组形式的内容子集作为结果,您不会先转换为字符串。此外,根本不清楚您问题中的第一个代码块与该问题有什么关系。该代码块中没有对.slice() 的引用。
  • 预期结果是什么 a) 调用 .toString(); ? ; b) var stationid = stringit.slice(4); ?
  • @billyonecan:就目前而言,您的陈述是正确的,但 String.prototype.slice() 也是一个函数。这不是问题要问的函数,但不应该调用它产生不同的错误吗?

标签: javascript jquery arrays


【解决方案1】:

在 JavaScript 中,数组和字符串都有切片方法。您真正想要的是数组切片,而您拥有的是字符串切片。 JavaScript 将根据变量是字符串还是数组自动执行切片。因此,为了获取第 4 个索引处的值,请执行以下操作。

var stationid = qdb_data[0].slice(4,5);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-07-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-26
    • 1970-01-01
    • 2020-06-27
    • 2020-11-09
    相关资源
    最近更新 更多