0

我在mockapi中有 json 之类的

[{"id":"1","name":"Container 1","widgets":[],{"id":"2","name":"Container 2","widgets":[]},{"id":"3","name":"Container 3","widgets":[]}]

我想让它像:

[{"id":"2","name":"Container 2","renamed":"true","widgets":[]},{"id":"1","name":"Container 1","renamed":"true","widgets":[]},{"id":"3","name":"Container 3","renamed":"true","widgets":[]}]

我尝试了清除json(循环删除)并在上面发布json,结果是:

[{"0":{"id":"2","name":"Container 2","renamed":"true","widgets":[]},"1":{"id":"1","name":"Container 1","renamed":"true","widgets":[]},"2":{"id":"3","name":"Container 3","renamed":"true","widgets":[]},"id":"4","widgets":[],"renamed":"true"}]

但我想要完全一样:

[{"id":"2","name":"Container 2","renamed":"true","widgets":[]},{"id":"1","name":"Container 1","renamed":"true","widgets":[]},{"id":"3","name":"Container 3","renamed":"true","widgets":[]}]

模拟API中

我的 ts 文件:

updateLocationContainer(){
    /* loop delete all json */
    /* this.containers is Json */
    for (let i = 0; i < this.containers.length; i++) {
        this.containerService.delete(this.containers[i].id).subscribe(result => {},(response: Response) => {
            if (response.status === 500) {
                this.error = 'errorHasOcurred';
            }
        });     
    } /*end for*/

    this.containerService.createContainer(this.containers).subscribe(result => {
        return this.containerService.getContainer().subscribe(res => this.containers = res);
    },(response: Response) => {
        if (response.status === 500) {
            this.error = 'errorHasOcurred';
        }
    });
} /*end func */

我的服务:

delete(id){
    const url = `${this.containerUrl}/${id}`;
    return this.http.delete(url,{headers: this.headers})
    .map(response => {
        return response;
    }).catch(error => this.handleError(error));
}
createContainer(container) {
    return this.http.post(this.containerUrl,JSON.stringify(container),{headers: this.headers})
    .map(response => {
        return response;
    }).catch(error => this.handleError(error));
}
4

2 回答 2

0

如果你用 for cícle 做一个函数,像这样:

for(let i = 1; i < this.containers.length; i++){
    this.containers.find(x => x.id == i).id = i++;
    this.containers.find(x => x.id == i).renamed = true;
}

?

于 2017-12-01T14:08:10.497 回答
0

如果您只想交换两个元素,例如可以将具有索引的对象0临时存储在变量中,用索引中的对象覆盖数组中的对象1,然后设置临时存储在索引中的对象1

data = [
         {"id":"1","name":"Container 1","widgets":[]},
         {"id":"2","name":"Container 2","widgets":[]},
         {"id":"3","name":"Container 3","widgets":[]}
       ]

// ...

let temp = this.data[0];
this.data[0] = this.data[1];
this.data[1] = temp;
于 2017-12-02T07:56:59.373 回答