如何对javascript对象的属性执行计算并将其打印出来

How to perform calculations to properties of a javascript object and print it out

本文关键字:打印 计算 执行 javascript 对象 属性      更新时间:2023-09-26

我还在学习javascript,这是不是一个家庭作业问题。
我有一个对象集合

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 );

1,对所有'age'执行计算,例如age = age+1

你在这里做的是循环遍历数组。JavaScript中有很多方法可以做到这一点;看到这个答案有一个很长的列表。在现代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:

的结果创建一个新的数组
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>

遍历集合并在每次迭代中执行计算:

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); 
}