gpt4 book ai didi

来自数组值的 Javascript 动态变量名称(Appcelerator Titanium)

转载 作者:行者123 更新时间:2023-11-29 18:33:12 26 4
gpt4 key购买 nike

我正在开发 Titanium 应用程序并构建了一个函数来运行 sqlite 数据库查询并返回结果集(数组)。

我不会费心去深入了解 Titaniums 的细节,因为它不会对我面临的问题产生太大的影响。

基本上任何查询都可以使用此函数执行,因此一旦执行,您自然需要一个与特定数据库列名称相对应的数据数组。这是我遇到问题的地方。根据钛系统的工作方式,我需要将结果推送到结果数组中,如下所示:

var resultSet = conn.execute('SELECT * FROM some_table WHERE parent = ?', parent);
if (resultSet.isValidRow()) {
result = {
id: resultSet.fieldByName('id'),
name: resultSet.fieldByName('name'),
parent: resultSet.fieldByName('parent'),
order: resultSet.fieldByName('order')
};
}

好的,这样就可以了。但它不够动态。当您想从具有不同字段的不同表中进行选择时会发生什么。 id、name、parent 和 order 显然是行不通的。

我想做的是获取一个数组(我已经有了)并将值用作它们的名称,如下所示:

var resultSet = conn.execute(<!-- SQL IS IN HERE -->);
var fieldCount = resultSet.fieldCount();
var fields = [];
for(i=0;i<fieldCount;i++) {
fields.push(resultSet.fieldName(i));
};
// At this point we have an array 'fields' which contains all the field names.

var results = [];
while (resultSet.isValidRow()) {
results.push({
// START OF PROBLEM
for(i=0; i < fields.length; i++)
{
fields[i]: resultSet.fieldByName(fields[i]);
}
// END OF PROBLEM
});
resultSet.next();
};
resultSet.close();

上面注释的开始/结束显示了问题代码。我意识到这是错误的,但无法弄清楚它应该如何。假设字段数组包含“id”和“name”,我需要变量来覆盖它们中的两个,但它们必须是动态的——我想避免为每个表创建一个新的 javascript 函数。

我应该指出,我是一名 PHP 专家,我在 JS 方面的经验非常有限。我一直在利用这个机会学习,但就是无法理解这个!如果解释的不够清楚,真的很抱歉,希望 JS 大师能在这里伸出援手!

干杯

最佳答案

几乎明白了,只是你试图在对象字面量中遍历字段数组,这是完全无效的——你只能有键值对在对象字面量中。

var resultSet = conn.execute(<!-- SQL IS IN HERE -->);
var fieldCount = resultSet.fieldCount;
var fields = [];
for(var i = 0; i < fieldCount;i++) {
fields.push(resultSet.fieldName(i));
};

var results = [];
while (resultSet.isValidRow()) {
for(var i=0; i < fields.length; i++) {
results[i] = {};
results[i][fields[i]] = resultSet.fieldByName(fields[i]);
}
resultSet.next();
};
resultSet.close();

关于来自数组值的 Javascript 动态变量名称(Appcelerator Titanium),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5682724/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com