簡體   English   中英

嘗試將逗號分隔值的每個元素也作為數組元素推送

[英]trying to push each element with comma separated values also as an array element

我有下面的json對象。

$scope.myDataList = [
  {name:"one,two"},
  {name:"three"},
  {name:"four"},
  {name:"five,eight,nine"}
]

我正在迭代列表,並按如下所示將元素推入數組。

$scope.myArray = new Array();
angular.forEach($scope.myDataList, function (value, key) { 
  $scope.myArray.push(value.name); 
});

我也想在數組中使用逗號分隔的值推送每個元素。 例:
當我打印$scope.myArray[0] ,它打印one,two
但是預期的結果是我想為$scope.myArray[0]打印one ,為$scope.myArray[1]打印two ,為$scope.myArray[2]三個。

每個帶有逗號分隔的值我也想作為數組元素推送。
我嘗試如下,但不起作用。

var array = $scope.myArray.split(',');

演示: http//plnkr.co/edit/q36BQeqsj5GVNkP4PPhq?p = preview

您需要拆分name然后將結果連接到數組:

angular.forEach($scope.myDataList, function (value, key) { 
  $scope.myArray = $scope.myArray.concat(value.name.split(',')); 
});

您的問題與AngularJS無關,所以我用純JavaScript重寫了它:

 $scope = {}; $scope.myDataList = [{name:"one,two"},{name:"three"},{name:"four"},{name:"five,eight,nine"}] $scope.myArray = $scope.myDataList.map(({ name }) => name.split(',')) .reduce((result, splitElement) => result.concat(splitElement), []); console.log($scope.myArray); 

請注意,代碼中的以下行

$scope.myArray.push(value.name);

將未拆分的字符串(如'five,eight,nine'推入$scope.myArray 這不是您想要的。 同樣, $scope.myArray.split(',')將失敗,因為Array.prototype沒有split功能。

獲得正確結果的一種方法是映射到原始數組並拆分每個元素(結果是字符串數組的數組)。 之后,您可以使用Array.concat將內部字符串數組連接在一起。 這是以下兩行的內容:

$scope.myArray = $scope.myDataList.map(({ name }) => name.split(','))
     .reduce((result, splitElement) => result.concat(splitElement), []);

這是一個相當簡單的方法:

$scope.myArray = $scope.myDataList.reduce((a, {name}) => a.concat(name.split(',')), [])

請注意,您要執行的操作是獲取原始列表並創建一個新列表。 由於它不是一對一的映射,因此不是map 但是reduce是合適的,並且比forEach攜帶更多的信息。

 const $scope = { myDataList: [ {name:"one,two"}, {name:"three"}, {name:"four"}, {name:"five,eight,nine"} ] } $scope.myArray = $scope.myDataList.reduce((a, {name}) => a.concat(name.split(',')), []) console.log($scope) 

在推送數組元素時,您可以執行以下操作:

 $scope.myArray = $scope.myArray.concat(value.name.split(",")); 

這是嘗試的代碼。 http://plnkr.co/edit/nc91XI4vPJT0nEZvmMzU?p=preview

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM