iT邦幫忙

0

JQUERY JSON刪除陣列中一個值

klz 2021-12-11 16:06:251846 瀏覽
  • 分享至 

  • xImage

想做一個由php轉成json,
之後在input某個值
在jquery中刪除, 請教如何做?

$item = array("a","b","c","d");
$jsonitem = json_encode($item);
    var jarr = <?php echo json_encode($jsonitem); ?>;
    var arr = jQuery.parseJSON(jarr);
    arr.remove("b"); //這個出問題了
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

2 個回答

1
fillano
iT邦超人 1 級 ‧ 2021-12-11 16:33:39
  1. 跟你的問題無關,請用JSON.parse來剖析,不要用jQuery.parseJSON
  2. 同樣,Javascript的陣列沒有remove這個方法...如果知道要刪除的東西的index,那可以用splice方法;如果要比對值來刪,可以用filter等方法。
看更多先前的回應...收起先前的回應...
klz iT邦新手 5 級 ‧ 2021-12-11 16:37:44 檢舉

謝謝大師.
能再給我一點參考嗎?
我改用JSON.parse
想刪除arr 中的"b"
用splice 如何寫?

klz iT邦新手 5 級 ‧ 2021-12-11 16:47:08 檢舉

例如這樣: $item = array("peter","john","ann","amy");
我有個input: 輸入了 john
就想delete這個值 用splice filter如何寫?

klz iT邦新手 5 級 ‧ 2021-12-11 17:18:31 檢舉
淺水員 iT邦大師 6 級 ‧ 2021-12-11 18:09:23 檢舉

範例這邊就有了
MDN Array.prototype.splice

另外 jarr 原本就不是字串,應該不用 parse

fillano iT邦超人 1 級 ‧ 2021-12-13 08:24:00 檢舉

$item.splice($item.indexOf('john'), 1);

klz iT邦新手 5 級 ‧ 2021-12-14 20:43:48 檢舉

感謝你, 我要參詳一下

1
海綿寶寶
iT邦大神 1 級 ‧ 2021-12-12 11:48:07

json 是用來記錄 key-value 類型的資料,重點是 key
array 是用來記錄一串相關資料,重點是 index

結果你的資料沒有 key,卻要用 json 來處理
你可能要想清楚你真正的目的是什麼
再繼續往下做

以下是我用 json 和 array 兩種方式做你說的結果
你看一下就知道差異在那裡了

https://ithelp.ithome.com.tw/upload/images/20211212/20001787NpxobafdX3.png

json

var jarr = '["a","b","c","d"]';
var arr = JSON.parse(jarr);
console.log(arr);
delete arr[Object.keys(arr)[1]];
console.log(arr);

array

var mstr = "a,b,c,d";
var marr = mstr.split(",");
console.log(marr);
marr.splice(1,1);
console.log(marr);
klz iT邦新手 5 級 ‧ 2021-12-14 21:17:51 檢舉

其實我真實的資料是有 key-value

var jarr = 
([0] => Array ( [name] => peter [age] => 10 )
 [1] => Array ( [name] => amy  [age] => 20 ) );
 
var arr = JSON.parse(jarr);
console.log(arr);
delete arr[Object.keys(arr)[1]]; 
//我現在問題在那 大約都明白 這可以delete [1] 這個位置,
//但我會有個 input輸入'peter'
//如輸入了'peter' 就想delete 我又不知到keys(arr)[1] 這個位置


console.log(arr);

其實我真實的資料是有 key-value

如果你提問用的資料不是「正確完整的資料格式」
那你也不必期待可以問到「正確完整的答案」了
GQGA

klz iT邦新手 5 級 ‧ 2021-12-15 21:41:37 檢舉

謝謝提點, 因為做了一半才發現要在array中有不同的 key-value, 但按以上 我可以如何做到我想要的?

就是我會有個 input輸入'peter'
如輸入了'peter' 就想delete 這個資料 但我可以如何在name:peter中找到相應的[1]

我要發表回答

立即登入回答