从 JavaScript 中的多维数组中获取数组值
Posted
技术标签:
【中文标题】从 JavaScript 中的多维数组中获取数组值【英文标题】:Getting array values from multidimensional array in JavaScript 【发布时间】:2016-08-29 20:21:39 【问题描述】:我需要一些小的帮助。我无法让一个填充了其他两个数组对象(larray1 和 larray2)的数组(larray3)从 data.js 传递到后续的 model.js 和 view.js。 Data.js 正确构建了多维数组,但是当在 model.js/view.js 中收到结果时,我只收到 larray1 的结果。因为只有第一个值通过我无法判断 larray1 和 larray2 是否实际上都通过了。有人可以告诉我应该如何更改 model.js 或 view.js 中的语法以访问两个数组值或我可以更改的其他内容吗?提前谢谢你。
data.js.
function getCountries(done)
var sqlite3 = require('sqlite3').verbose();
var file = 'db/locations.sqlite3';
var db = new sqlite3.Database(file);
var larray1 = [];
var larray2 = [];
var larray3 = [];
db.all('SELECT * FROM Country', function(err, rows)
// This code only gets called when the database returns with a response.
rows.forEach(function(row)
larray1.push(row.CountryName);
larray2.push(row.CountryCode);
)
larray3.push(larray1);
larray3.push(larray2);
return done(larray3[0], larray3[1]);
);
db.close();
model.js
function Countries(done)
//Pull location values from data
return getCountries(done);
view.js
function viewCountries()
var viewCou = Countries(function(results)
// Code only gets triggered when Countries() calls return done(...);
var container = document.getElementById('country-select');
var fragment = document.createDocumentFragment();
results.forEach(function(loc, index)
var opt = document.createElement('option');
opt.innerhtml = loc;
opt.value = loc;
fragment.appendChild(opt);
);
container.appendChild(fragment);
)
【问题讨论】:
【参考方案1】:在 data.js 中,您向 done
回调发送两个参数:
return done(larray3[0], larray3[1]);
这个done
函数在你的model.js 中传递:
return getCountries(done);
而 done
是从 view.js 传入的:
Countries(function(results) // ...
所以在 data.js 中调用的就是这个匿名函数 (function(results) ...
)。但请注意,此函数只有一个参数,因此您对 data.js 发送的第二个参数什么也不做。 result
获取 larray3[0]
的值,但 larray3[1]
没有在任何地方捕获。
你可以用不同的方式解决这个问题。就个人而言,我认为两个数组的设计从一开始就是错误的。我不会将成对的数据(名称和代码)分成两个不同的数组。
改为创建一个对象数组,然后传递该单个数组:
在 data.js 中:
rows.forEach(function(row)
larray1.push(
name: row.CountryName,
code: row.CountryCode
);
)
return done(larray1);
在 view.js 中:
opt.textContent = loc.name;
opt.value = loc.code;
旁注:在分配纯文本时,.textContent
优于 .innerHTML
。
【讨论】:
谢谢。我曾尝试过类似于键值配对的方法,但我知道我没有正确实施。这很好用。我也会考虑.textcontent。非常感谢您的帮助!以上是关于从 JavaScript 中的多维数组中获取数组值的主要内容,如果未能解决你的问题,请参考以下文章