向JavaScript中的对象集合添加键
我有一个JavaScript对象数组,如下所示:向JavaScript中的对象集合添加键,javascript,Javascript,我有一个JavaScript对象数组,如下所示: [ {A:10}, {B:20}, {C:30} ] 我正试图将其转换为一个如下所示的对象数组(用于d3.js): 我只需执行以下操作即可获得对象的初始数组: var wordData = []; for (var i = 0; i < words.length; i++) { if (wordData.hasOwnProperty(words[i])) { wordData[words[i]] +=
[
{A:10},
{B:20},
{C:30}
]
我正试图将其转换为一个如下所示的对象数组(用于d3.js):
我只需执行以下操作即可获得对象的初始数组:
var wordData = [];
for (var i = 0; i < words.length; i++) {
if (wordData.hasOwnProperty(words[i])) {
wordData[words[i]] += 1;
} else {
wordData[words[i]] = 1;
}
}
var-wordData=[];
for(var i=0;i
这只是设置一个简单的散列,但不会在每个散列之前添加键
编辑
为了简单起见。请尝试下面的代码。我试过使用for循环
var wordData = [
{A: 10},
{B: 20},
{C: 30}
];
var result = wordData.map(function (item) {
var key = Object.keys(item)[0];
return {word: key, weight: item[key]};
});
var wordData =[
{A: 10},
{B: 20},
{C: 30}
];
var results = [];
for (var prop in wordData) {
var key = Object.keys(wordData[prop])[0];
result = {word: key, weight: wordData[prop][key]};
results.push(result);
}
var json_result = JSON.stringify(results, null, 2);
console.log(json_result);
输出
[
{
"word": "A",
"weight": 10
},
{
"word": "B",
"weight": 20
},
{
"word": "C",
"weight": 30
}
]
或
输出
[{"word":"A","weight":10},{"word":"B","weight":20},{"word":"C","weight":30}]
<div id="data">
Run the code below
</div>
var wordData = {}; // Edit, use {} intead of [] here.
for (var i = 0; i < words.length; i++) {
// The problem is definitely in this loop.
if (wordData.hasOwnProperty(words[i])) {
wordData[words[i]] += 1;
} else {
wordData[words[i]] = 1;
}
}
var results = [];
for (var prop in wordData) {
result = {word: prop, weight: wordData[prop]};
results.push(result);
}
var json_result = JSON.stringify(results, null, 2);
document.getElementById('data').innerHTML = json_result;
[{“单词”:“A”,“权重”:10},{“单词”:“B”,“权重”:20},{“单词”:“C”,“权重”:30}]
运行下面的代码
var wordData={};//编辑,在这里使用{}插入[]。
for(var i=0;i
请尝试下面的代码。我试过使用for循环
var wordData =[
{A: 10},
{B: 20},
{C: 30}
];
var results = [];
for (var prop in wordData) {
var key = Object.keys(wordData[prop])[0];
result = {word: key, weight: wordData[prop][key]};
results.push(result);
}
var json_result = JSON.stringify(results, null, 2);
console.log(json_result);
输出
[
{
"word": "A",
"weight": 10
},
{
"word": "B",
"weight": 20
},
{
"word": "C",
"weight": 30
}
]
或
输出
[{"word":"A","weight":10},{"word":"B","weight":20},{"word":"C","weight":30}]
<div id="data">
Run the code below
</div>
var wordData = {}; // Edit, use {} intead of [] here.
for (var i = 0; i < words.length; i++) {
// The problem is definitely in this loop.
if (wordData.hasOwnProperty(words[i])) {
wordData[words[i]] += 1;
} else {
wordData[words[i]] = 1;
}
}
var results = [];
for (var prop in wordData) {
result = {word: prop, weight: wordData[prop]};
results.push(result);
}
var json_result = JSON.stringify(results, null, 2);
document.getElementById('data').innerHTML = json_result;
[{“单词”:“A”,“权重”:10},{“单词”:“B”,“权重”:20},{“单词”:“C”,“权重”:30}]
运行下面的代码
var wordData={};//编辑,在这里使用{}插入[]。
for(var i=0;i
您需要迭代两次。但是
{A,10}
看起来不是有效的javascript,它应该是{A:10}
。更正,谢谢@nicaeloccurrence count-您的预期输出没有反映这一点。请确保:)只需知道权重值是该键(word
的次数)已通过迭代单词数组发生。您需要迭代两次。但是{A,10}
看起来不是有效的javascript,它应该是{A:10}
。已更正,thankyou@nicaeloccurrence count-您的预期输出没有反映出这一点(请确定:)只需知道weight
值是关键字(word
)通过迭代一个单词数组发生的次数。这可能是答案,但我无法让它工作。我不明白为什么我的源代码集wordData
在本地测试时长度为1。我正在用一个新的编辑更新我的问题,该编辑显示了Chrome inspector显示的内容。这可能是因为我创建wordData
对象的方式。编辑3是最新的编辑。@mariocatch,而不是屏幕截图。您可能想发布JSON.stringify(wordData,null,2)
…那么您最初的假设(“我有一个对象数组”)是错误的。;)显示构建“数组”的代码。我已经编辑了这个长问题,并添加了一个复制该问题的代码。那么,更改var wordData=[]
tovar-wordData={}显然,代码>。)这可能是答案,但我无法让它发挥作用。我不明白为什么我的源代码集wordData
在本地测试时长度为1。我正在用一个新的编辑更新我的问题,该编辑显示了Chrome inspector显示的内容。这可能是因为我创建wordData
对象的方式。编辑3是最新的编辑。@mariocatch,而不是屏幕截图。您可能想发布JSON.stringify(wordData,null,2)
…那么您最初的假设(“我有一个对象数组”)是错误的。;)显示构建“数组”的代码。我已经编辑了这个长问题,并添加了一个复制该问题的代码。那么,更改var wordData=[]
tovar-wordData={}显然,代码>。)我在这里复制了你的代码:在那个例子中,它在数组中提供了空对象。我在这里复制了你的代码:在那个例子中,它在数组中提供了空对象。