我还在学习javascript,这是 NOT 一个家庭作业问题 我有一个对象集合
var x = [{name:'Ann',age:1,ending:'years old'},
{name:'Bob',age:2,ending:'years old'},
{name:'Cat',age:3,ending:'years old'},
{name:'Dog',age:10,ending:'years old'},
{name:'Fly',age:5,ending:'years old'}]
我想知道如何:
1,对所有' age'执行计算,例如age = age + 1
2,将计算数据放入对象集合// x.push(age)我猜?
3,打印出来' x'这样:
console.log(x[name]+' is '+x[age]+''+x[ending]+[calculations to age])
//Ann is 1 years old2
//Bob is 2 years old3....
我知道这句话没有意义,但这并不重要。
我的尝试:
var arr = '';
for (var property in x){
arr += x[property]+'\t';
}
var newArr = arr.split('\t')
,calculatedData = newArr[1]+1 ;
newArr.push(calculatedData) ;
console.log(newArr[0]+' is '+newArr[1]+''+newArr[2]+calculatedData );
答案 0 :(得分:0)
1,对所有'年龄'进行计算,例如年龄=年龄+ 1
您正在做的是循环遍历数组。在JavaScript中有很多方法可以做到这一点;请参阅this answer以获取详细信息。在现代JavaScript中,forEach
很常见:
x.forEach(function(entry) {
entry.age = entry.age + 1;
// more commonly written like this:
// ++entry.age;
});
注意每个数组条目如何作为第一个参数提供给我们的回调函数。
或者可选地,古老的for
循环:
var index;
for (index = 0; index < x.length; ++index) {
x[index].age = x[index].age + 1;
// more commonly:
// ++x[index].age;
}
请注意我们必须按索引x[index]
查找条目。
2,将计算数据放入对象集合// x.push(age)我猜?
好吧,如果我们在对象上更新age
,它就已经存在了。或者,我们可以使用map
创建一个带有结果的 new 数组:
var newArray = x.map(function(entry) {
return entry.age + 1;
});
现在,newArray
是一个数字数组,是每个年龄加1的结果。
但根据您的问题#3,您更有可能想要添加具有更新年龄的新媒体资源:
x.forEach(function(entry) {
entry.updatedAge = entry.age + 1;
});
3,以这种方式打印'x':
那是另一个循环:
x.forEach(function(entry) {
console.log(entry.name + " is " + entry.age + " " + entry.ending + " " + entry.updatedAge);
});
直播示例:
var x = [{name:"Ann",age:1,ending:'years old'},
{name:"Bob",age:2,ending:'years old'},
{name:"Cat",age:3,ending:'years old'},
{name:"Dog",age:10,ending:'years old'},
{name:"Fly",age:5,ending:'years old'}];
x.forEach(function(entry) {
entry.updatedAge = entry.age + 1;
});
x.forEach(function(entry) {
snippet.log(entry.name + " is " + entry.age + " " + entry.ending + " " + entry.updatedAge);
});
<!-- Script provides the `snippet` object, see http://meta.stackexchange.com/a/242144/134069 -->
<script src="http://tjcrowder.github.io/simple-snippets-console/snippet.js"></script>
当然,您可以在一个循环中完成所有操作:
x.forEach(function(entry) {
snippet.log(entry.name + " is " + entry.age + " " + entry.ending + " " + (entry.age + 1));
// Note the () ----------------------------------------------------------^-------------^
});
直播示例:
var x = [{name:"Ann",age:1,ending:'years old'},
{name:"Bob",age:2,ending:'years old'},
{name:"Cat",age:3,ending:'years old'},
{name:"Dog",age:10,ending:'years old'},
{name:"Fly",age:5,ending:'years old'}];
x.forEach(function(entry) {
snippet.log(entry.name + " is " + entry.age + " " + entry.ending + " " + (entry.age + 1));
});
<!-- Script provides the `snippet` object, see http://meta.stackexchange.com/a/242144/134069 -->
<script src="http://tjcrowder.github.io/simple-snippets-console/snippet.js"></script>
答案 1 :(得分:0)
遍历集合并按每次迭代执行计算:
var x = [{name:"Ann",age:1,ending:'years old'},
{name:"Bob",age:2,ending:'years old'},
{name:"Cat",age:3,ending:'years old'},
{name:"Dog",age:10,ending:'years old'},
{name:"Fly",age:5,ending:'years old'}];
for(var i = 0; i<x.length; i++){
//perform calc on age
x[i].age = x[i].age + 1;
//print info in object
console.log(x[i].name+' is '+x[i].age+' '+x[i].ending);
}