为了阐明我的问题,我想将数组中的两个值分成各自的变量,然后分别使用它们输出。因此它可能适用于:
对于每个-> 名称+'-'值
结果:
Apple - 1
Banana - 2
Orange - 3
我正在尝试使用下面的代码完成上面的输出
var groceries =[
{"Apple": 1},
{"Banana": 2},
{"Orange": 3}
];
var name = groceries.map(c => object.values(c)[0]);
var value = groceries.map(d => Object.values(d)[0]);
name.forEach(function(g_name) {
document.body.appendChild(document.createElement('div')).textContent = g_name;
});
value.forEach(function(g_value) {
document.body.appendChild(document.createElement('div')).textContent = g_value;
});
我有int的输出,显示了1、2、3,但它是我一直在困扰的字符串部分。
由于数组类似于[object Object],因此我认为在object.values中使用小写字母会有所帮助,但出现错误Uncaught ReferenceError: object is not defined on line
我还想知道我可以对两种变量中的每一个进行哪种“文档”回显组合。
答案 0 :(得分:1)
考虑创建对象的条目仅创建一个数组,而不是创建两个单独的数组,然后插入由-
分隔的键和值:
var groceries =[
{"Apple": 1},
{"Banana": 2},
{"Orange": 3}
];
for (const [[key, value]] of groceries.map(Object.entries)) {
document.body.appendChild(document.createElement('div')).textContent = `${key} - ${value}`;
}
您当前的代码存在问题
name
用作顶级变量,因为它将始终被强制转换为字符串(而且,最好使用精确的变量名-有助于防止错误!)object.values
无法正常工作-您需要Object.values
Object.keys
获取密钥-两次使用Object.values
只会为您提供两次值修正原始代码:
const groceries = [{
"Apple": 1
},
{
"Banana": 2
},
{
"Orange": 3
}
];
const groceryNames = groceries.map(c => Object.keys(c)[0]);
const groceryValues = groceries.map(d => Object.values(d)[0]);
groceryNames.forEach(function(g_name, i) {
const value = groceryValues[i];
document.body.appendChild(document.createElement('div')).textContent = `${g_name} - ${value}`;
});
答案 1 :(得分:-1)
因为答案
var name = groceries.map(c => object.values(c)[0]);
中有一个错字,应该是Object.values
name
是全局保留的变量,请不要使用它。改用names
解决方案:
遍历groceries
,
获取对象项的第一个键,例如key = Object.keys(obj)[0]
使用如下键和值创建具有所需输出的div:key + ' - ' + obj[key]
工作示例
var groceries =[
{"Apple": 1},
{"Banana": 2},
{"Orange": 3}
];
// may be it would be better to use one loop in this case
groceries.forEach((obj) => {
const key = Object.keys(obj)[0] // getting a single first key of object
document.body.appendChild(document.createElement('div')).textContent =
key + ' - ' + obj[key];
})