Typescript更新数组值,其中index = value

时间:2017-05-20 19:43:08

标签: javascript arrays typescript

我得到了这个数组:

array={
 posts:[
   {
     isReported:false,
     id:1,
     title:'عنوان المقال القادم من الخادم رقم 1',
     img:'assets/img/1.jpg',
     userId:31,
     userName:'محمود عبد السلام',
     userImg:'assets/img/1.jpg'
  },
....
  ],
....
 }

我想编辑isReported的值,例如id = 3,并将其设置为true。 怎么做?

2 个答案:

答案 0 :(得分:1)

(function() {

  const data = {
    posts: [{
      isReported: false,
      id: 1,
      title: 'عنوان المقال القادم من الخادم رقم 1',
      img: 'assets/img/1.jpg',
      userId: 31,
      userName: 'محمود عبد السلام',
      userImg: 'assets/img/1.jpg'
    }, {
      isReported: false,
      id: 2,
      title: 'عنوان المقال القادم من الخادم رقم 1',
      img: 'assets/img/1.jpg',
      userId: 31,
      userName: 'محمود عبد السلام',
      userImg: 'assets/img/1.jpg'
    }, {
      isReported: false,
      id: 3,
      title: 'عنوان المقال القادم من الخادم رقم 1',
      img: 'assets/img/1.jpg',
      userId: 31,
      userName: 'محمود عبد السلام',
      userImg: 'assets/img/1.jpg'
    }]
  };

  const post3 = data.posts.filter(post => post.id === 3)[0];

  if (post3) {
    console.log(post3);

    post3.isReported = true;

    console.log(post3);
  }

}());

注意,我将array重命名为data,因为它不是数组,而是具有我们访问的名为posts的属性的对象。

我们使用filter方法(Array.prototype.filter)来查找我们感兴趣的数组中的项目。

由于filter返回一个数组,我们访问第一个元素。

如果filter找不到任何匹配的项目,它会返回一个空数组,访问第一个元素将返回undefined,所以我们在操作之前检查它。

在较新的运行时中,我们可以使用find方法

更直接地表达这一点
const post3 = data.posts.find(post => post.id === 3);

答案 1 :(得分:-1)

你可以这样做:

array.posts.filter(item= > item.id === 3)[0].isReported = true;