2017-04-24 104 views
0

一個另一陣列的條件我有對象的下面遍歷對象的列表上的jquery

列表中的newlist也是動態的和SELECTID陣列也是動態

我填充thorugh功能,現在我要iteratte並創建新的列表

var newList = 
    [ 
    { id : 1,name="tea",plant:"darjeeling"}, 
    { id : 2,name="coffee",plant:"manipur"}, 
    { id : 3,name="milk",plant:"nilgiri"}, 
    { id : 4,name="tea",plant:"assam"} 
    ] 

具有共同

var selectedID = [2,3]; 
ID anaother陣列

現在我要遍歷對象的列表和更新的對象列表作爲 無論ID爲2和3的植物應該是「蒙納」

所以如何創建對象的「newlist」新列表如下圖所示

var newList = 
[ 
{ id : 1,name="tea",plant:"darjeeling"}, 
{ id : 2,name="coffee",plant:"munnar"}, 
{ id : 3,name="milk",plant:"munnar"}, 
{ id : 4,name="tea",plant:"assam"} 
] 
+3

以及您的特殊問題在哪裏? –

+3

op沒有問過任何問題。 –

+2

@Kinduser,rereaded,沒有發現問題o_O –

回答

1

我假設你是在JavaScript這樣做,所以首先我要指出你應該有像這樣定義的newList

var newList = 
    [ 
    { id : 1,name:"tea",plant:"darjeeling"}, 
    { id : 2,name:"coffee",plant:"manipur"}, 
    { id : 3,name:"milk",plant:"nilgiri"}, 
    { id : 4,name:"tea",plant:"assam"} 
    ] 

name =「tea」將不起作用。

但是在你的問題上,你會想要使用selectedID數組值來更新你現有的newList。

var newList = 
    [ 
    { id : 1,name:"tea",plant:"darjeeling"}, 
    { id : 2,name:"coffee",plant:"manipur"}, 
    { id : 3,name:"milk",plant:"nilgiri"}, 
    { id : 4,name:"tea",plant:"assam"} 
    ] 

var selectedID =[2,3] 

for(i=0;i<newList.length;i++){ 
    for(j=0;j < selectedID.length;j++){ 
     if(newList[i].id==selectedID[j]) 
     newList[i].plant = "munnar"; 
    } 
} 

console.log(newList); 
+0

會根據索引而不是基於'id'值更改'newList'。 –

+0

你是對的,這就是我匆忙編碼 –

+0

不能改變新列表,只需要改變值,無論它在哪裏找到ID – tripathy

1

您可以迭代想要的ID進行更改,找到對象並更改值。

使用:

var newList = [{ id: 1, name: "tea", plant: "darjeeling" }, { id: 2, name: "coffee", plant: "manipur" }, { id: 3, name: "milk", plant: "nilgiri" }, { id: 4, name: "tea", plant: "assam" }], 
 
    selectedID = [2, 3]; 
 

 
selectedID.forEach(id => (newList.find(a => a.id === id) || {}).plant = 'munnar'); 
 

 
console.log(newList);
.as-console-wrapper { max-height: 100% !important; top: 0; }

+0

不知道爲什麼它不在視覺工作室js文件工作 – tripathy

+0

@tripathy,它是ES6風格。但更好的問題是'newList'中有多少數據,''selectedID'中有多少個索引?內容多久改變一次?索引是否被排序? –

+0

指數不會被排序,它們只是來自另一個函數的值。 SeletedID可以包含很多,也可以包含很多對象。但是SelectedID將包含小於或等於列表中的對象數量,肯定 – tripathy

0

據我瞭解,你想處理原始數組與基於選擇的一組ID不同的值。如果那些可能來自用戶界面的選定ID與您的工廠陣列中的任何ID匹配,則將名稱更改爲Munnar?如果我理解正確的話,我相信下面應該爲你工作

var newList = [{ 
    id: 1, 
    name: "tea", 
    plant: "darjeeling" 
}, { 
    id: 2, 
    name: "coffee", 
    plant: "manipur" 
}, { 
    id: 3, 
    name: "milk", 
    plant: "nilgiri" 
}, { 
    id: 4, 
    name: "tea", 
    plant: "assam" 
}] 

function munnar(selectedID) { 
    newList.forEach((item) => { 
    selectedID.forEach((id) => { 
     if(item.id === id) { 
     item.plant = 'Munnar' 
     } 
    }) 
    }) 
} 

munnar([2, 3]) 

這將返回

[{ 
    id: 1, 
    name: "tea", 
    plant: "darjeeling" 
}, { 
    id: 2, 
    name: "coffee", 
    plant: "Munnar" 
}, { 
    id: 3, 
    name: "milk", 
    plant: "Munnar" 
}, { 
    id: 4, 
    name: "tea", 
    plant: "assam" 
}]