Удалить двойные кавычки из массива в AngularJS - PullRequest
0 голосов
/ 06 июня 2018

Вот мой плункер: http://plnkr.co/edit/pnJ7q62eyBILTvX1f2dj?p=preview

В console.log () вы можете видеть, что после Update массив выглядит так:

{ age : "1", weight : "1"}  

и я хочу вот так:

{ age : 1, weight : 1}

Спасибо за ответы заранее !!!

Ответы [ 6 ]

0 голосов
/ 06 июня 2018

Измените входы на type="number":

   <input placeholder="age" type="number" ng-model="age">
   <input placeholder="weight" type="number" ng-model="weight">

   <button class="btn btn-warning" type="button" 
           ng-click="add(n.params , age , weight)">
     Update
   </button>

ИЛИ преобразуйте в число в функции add:

$scope.add = function(params , age, weight) {        
    $scope.params = params;      
    age && $scope.params.age = +age;
    weight && $scope.params.weight = +weight;
};
0 голосов
/ 06 июня 2018

Вы можете использовать Object.entries и , чтобы уменьшить метод массива для этого:

    const obj = Object.entries({ age : "1", weight : "1"})
                 .reduce((r, v) => (r[v[0]] = +v[1], r), {});

    console.log(obj);
0 голосов
/ 06 июня 2018

Просто используйте parseInt ()

Замените следующее в вашей add функции

$scope.params.age = parseInt(age);
$scope.params.weight = parseInt(weight);

var app = angular.module('plunker', []);

app.controller('MainCtrl', function($scope) {
 
 $scope.items = [ 
       {
          "params": {
            "age": 22,
            "weight": 66
          }
     },
       {
          "params": {
            "age": 19,
            "weight": 54
          }
     },
       {
          "params": {
            "age": 17,
            "weight": 75
          }
    }
 ]
 
  
   $scope.add = function(params , age, weight) {
		 
		 $scope.params = params;
		 
		 if(age)
          $scope.params.age = parseInt(age);
	   if(weight)
          $scope.params.weight = parseInt(weight);
          console.log($scope.params);
        }

  
  $scope.update = function(){
    
  }
  
});
<!DOCTYPE html>
<html ng-app="plunker">

  <head>
    <meta charset="utf-8" />
    <title>AngularJS Plunker</title>
    <script>document.write('<base href="' + document.location + '" />');</script>
    <link rel="stylesheet" href="style.css" />
    <script  src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.6.5/angular.min.js"></script>
    <script src="app.js"></script>
  </head>

  <body ng-controller="MainCtrl">
  <div ng-repeat="n in items">
           <ul ng-repeat="(name, param) in n.params"  style="list-style-type: none;">
             <li>{{name}} : {{param}}</li>
           </ul>
       <input style="display:inline;width:130px;margin-bottom:5px;margin-top:5px;" class="form-control" name="text" placeholder="age" ng-model="age">
       <input style="display:inline;width:115px;margin-bottom:5px;margin-top:5px;" class="form-control" name="text" placeholder="weight" ng-model="weight">
       <br />
       <button class="btn btn-warning" type="button" ng-click="add(n.params , age , weight)">Update</button>
      
 </div>
 
    <br />
   
  </body>
</html>
0 голосов
/ 06 июня 2018

Вы можете создать измененный объект, используя Object.keys() и reduce():

let obj = { age : "1", weight : "1"};

let result = Object.keys(obj).reduce((a, c) => (a[c] = Number(obj[c]), a), {});

console.log(result);
0 голосов
/ 06 июня 2018

Вы можете перебрать свой массив и преобразовать строку в число:

var arr = [{ age : "1", weight : "1"}, { age : "2", weight : "2"}  ];
arr.forEach(e =>  { 
  e.age = +e.age;
  e.weight = +e.weight;
});
console.log(arr);
0 голосов
/ 06 июня 2018

Используйте parseInt(), чтобы изменить строковые значения на целое число.Вы также можете использовать parseFloat(), но age и weight не будут значениями с плавающей запятой, поэтому parseInt() имеет больше смысла.

var obj =  {age : "1", weight : "1"};
for(var i in obj){
  obj[i] = parseInt(obj[i]);
}
console.log(obj);

На основе массива plunkr:

var items = [ 
     {
      "params": {
        "age": "22",
        "weight": "66"
      }
   },
     {
      "params": {
        "age": "19",
        "weight": "54"
      }
   },
     {
      "params": {
        "age": "17",
        "weight": "75"
      }
  }
 ];
 
items.forEach((obj)=>{
  var paramObj = obj.params;
  for(var i in paramObj){
    paramObj[i] = parseInt(paramObj[i]);
  }
});
   
console.log(items);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...