从 Javascript 中的两个嵌套数组中获取一个对象
Get an object from two nested array in Javascript
我想从两个数组中获取一个对象,我是通过以下方式实现的。
for (var j = 0; j < rawDataRows.length; j++) {
for (var i = 0; i < categories.length; i++) {
var category = categories[i];
var rowValue = rawDataRows[j];
// here I do got the right value for category
console.log(category);
console.log(rowValue);
// but the following line doesn't interpret category as a variable
formattedDataRows.push({category: rowValue});
}
}
我以为我能得到类似的东西:
[{"category1": "value1"},{"category2": "value2"}, {"category3": "value3"}]
然而,结果我得到了:
[{"category": "value1"}, {"category": "value2"}, {"category": "value3"}]
谁能指出我错在哪里?另外,如果您有更好的实现目标的方法,请发表评论。 Javascript 只有没有 jQuery 或其他框架。谢谢!
对象字面量语法 在 ECMAScript 5 及更低版本中,您不允许将变量标识符指定为 属性 名称。而是先创建对象,然后使用括号表示法。
var o = {};
o[category] = rowValue;
formattedDataRows.push(o);
使用 ECMAScript 6,您可以这样做:
formattedDataRows.push({[category]: rowValue});
当然,目前对该语法的支持是有限的。
您可以使用categories[i].toString();
来获取您想要的字符串:
var categories = ["category1", "category2", "category3"];
var rawDataRows = ["value1", "value2", "value3"];
var formattedDataRows = [];
for (var j = 0; j < rawDataRows.length; j++) {
for (var i = 0; i < categories.length; i++) {
var category = categories[i].toString();
var rowValue = rawDataRows[j].toString();
var tmpObj = {}
tmpObj[category] = rowValue
formattedDataRows.push(tmpObj);
//formattedDataRows.push({[category]: rowValue});
}
}
document.write(JSON.stringify(formattedDataRows))
如果您希望两个值一起递增(看起来),同时假设类别的长度与 rawdataRows 的长度相同,我认为您确实需要一个循环而不是两个循环:
for (var i = 0; i < categories.length; i++) {
var category = categories[i];
var rowValue = rawDataRows[i];
我想从两个数组中获取一个对象,我是通过以下方式实现的。
for (var j = 0; j < rawDataRows.length; j++) {
for (var i = 0; i < categories.length; i++) {
var category = categories[i];
var rowValue = rawDataRows[j];
// here I do got the right value for category
console.log(category);
console.log(rowValue);
// but the following line doesn't interpret category as a variable
formattedDataRows.push({category: rowValue});
}
}
我以为我能得到类似的东西:
[{"category1": "value1"},{"category2": "value2"}, {"category3": "value3"}]
然而,结果我得到了:
[{"category": "value1"}, {"category": "value2"}, {"category": "value3"}]
谁能指出我错在哪里?另外,如果您有更好的实现目标的方法,请发表评论。 Javascript 只有没有 jQuery 或其他框架。谢谢!
对象字面量语法 在 ECMAScript 5 及更低版本中,您不允许将变量标识符指定为 属性 名称。而是先创建对象,然后使用括号表示法。
var o = {};
o[category] = rowValue;
formattedDataRows.push(o);
使用 ECMAScript 6,您可以这样做:
formattedDataRows.push({[category]: rowValue});
当然,目前对该语法的支持是有限的。
您可以使用categories[i].toString();
来获取您想要的字符串:
var categories = ["category1", "category2", "category3"];
var rawDataRows = ["value1", "value2", "value3"];
var formattedDataRows = [];
for (var j = 0; j < rawDataRows.length; j++) {
for (var i = 0; i < categories.length; i++) {
var category = categories[i].toString();
var rowValue = rawDataRows[j].toString();
var tmpObj = {}
tmpObj[category] = rowValue
formattedDataRows.push(tmpObj);
//formattedDataRows.push({[category]: rowValue});
}
}
document.write(JSON.stringify(formattedDataRows))
如果您希望两个值一起递增(看起来),同时假设类别的长度与 rawdataRows 的长度相同,我认为您确实需要一个循环而不是两个循环:
for (var i = 0; i < categories.length; i++) {
var category = categories[i];
var rowValue = rawDataRows[i];