Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在javascript中更改数组中的元素并将其存储在新数组中_Javascript_Arrays - Fatal编程技术网

如何在javascript中更改数组中的元素并将其存储在新数组中

如何在javascript中更改数组中的元素并将其存储在新数组中,javascript,arrays,Javascript,Arrays,我是javascript新手 我有一个对象数组,比如 arr=[{id:1,likes:10},{id:3,likes:13},{id:3,likes:1}] what if i want to increase the value of likes by 1 where id is 1 and store the resulting array in arr2 ??? arr2=[{id:1,likes:11},{id:3,likes:13},{id:3,likes:1}] 你可以这样

我是javascript新手 我有一个对象数组,比如

arr=[{id:1,likes:10},{id:3,likes:13},{id:3,likes:1}]

what if i want to increase the value of likes by 1 where id is 1 and store the resulting array in arr2 ???

arr2=[{id:1,likes:11},{id:3,likes:13},{id:3,likes:1}]

你可以这样做
const arr=[{id:1,likes:10},{id:3,likes:13},{id:3,likes:1}]
常数arr2=[]
设obj={}
for(设i=0;imap()

const arr=[{id:1,likes:10},{id:3,likes:13},{id:3,likes:1}]
常量arr2=arr.map(i=>(i.id==1&&(i.likes+=1),i))
console.log(arr2)
或者你希望id是动态的

const increment_likes = (id, old) => old.map(obj =>
  obj.id === id ?
    { id: obj.id, likes: obj.likes + 1 } :
    obj
);
const arr2 = increment_likes(1, arr);

你可以这样做

arr=[{id:1,likes:10},{id:3,likes:13},{id:5,likes:1}]
function increase_id_likes_by_one(id){
    for(i=0;i<arr.length;i++){
    if (arr[i]['id'] == id) {
        arr[i]['likes'] += 1;
    }
  }
  console.log(arr);
}
increase_id_likes_by_one(1);
increase_id_likes_by_one(3);
increase_id_likes_by_one(5);
increase_id_likes_by_one(5);
arr=[{id:1,likes:10},{id:3,likes:13},{id:5,likes:1}]
功能增加一个(id){

对于(i=0;i您可以使用
Array.map()

var-arr=[{id:1,likes:10},{id:3,likes:13},{id:3,likes:1}];
变量id=1
var res=arr.map((obj)=>{
obj.id==1?obj.likes++:obj.likes;
返回obj;
});

console.log(res);
映射的内联版本
方法:

var-arr=[{id:1,likes:10},{id:3,likes:13},{id:3,likes:1}];
变量id=1
var res=arr.map({id,likes})=>({
身份证件
喜欢:(id==1?++likes:likes)
}));
console.log(res);
您可以尝试使用和:

var-arr=[{id:1,likes:10},{id:3,likes:13},{id:3,likes:1}];
var arr2=JSON.parse(JSON.stringify(arr)).map(i=>{
如果(i.id==1)i.likes+=1;
返回i;
});
console.log(arr);//未经修改的原始数组

console.log(arr2);//修改后的新数组
我正在尝试使用扩展运算符(…)来完成此操作请编辑您的问题并添加更多详细信息,如什么问题阻止了您?下选者,请敢于评论,有什么问题,以便我知道,我认为我的答案是正确的。虽然我没有下选您的回答,但您的代码在我看来很干净,但只是一个建议,请将结果存储在问题中提到的新数组中。!还有一件事,请尝试使用ES6标准,根据使用情况使用const/let,而不是传统的varHappy来帮助您@Narendra@NarendraChouhan您的答案是错误的,因为它也改变了原始数组。
arr=[{id:1,likes:10},{id:3,likes:13},{id:5,likes:1}]
function increase_id_likes_by_one(id){
    for(i=0;i<arr.length;i++){
    if (arr[i]['id'] == id) {
        arr[i]['likes'] += 1;
    }
  }
  console.log(arr);
}
increase_id_likes_by_one(1);
increase_id_likes_by_one(3);
increase_id_likes_by_one(5);
increase_id_likes_by_one(5);